当前位置: 首页 > news >正文

判断字符串中字符最多的那一个及个数

package com.yenange.test1;

import java.util.Scanner;
import java.util.regex.Matcher;
import java.util.regex.Pattern;

public class CountSameChar {
//http://topic.csdn.net/u/20100711/15/94889215-c666-4716-a6b5-1c0c8446db35.html
// 1. 一个字符串参数(value)由字母(a-z,A-Z)组成,且最大字符位数为40,
// 要求写一个函数(maxLength)返回该参数中连续相同字母的最大个数及该字母,
// 如果最大位数有多个,则返回第一个。例:字符串“aaaddxxxxddddxxxx”,返回值为:“x,4”。
// 要求:请考虑代码执行的效率并注意编码的风格。
public static void main(String[] args) {
Scanner input = new Scanner(System.in);
System.out.println("请输入一个字符串");
String str = input.next();
System.out.println(maxLength3(str));
}
/** 自己做的, 思路清晰, 绝对正确, 但代码不够精练 */
private static String maxLength(String str) {
int tempCount = 0, maxCount = 0;
char tempChar = ' ', maxChar = ' ';
String result = "输入串有错!";
if (str.length()>40) {
return result;
}
while (str.length() > 0) {
tempChar = str.charAt(0);
tempCount = 0;
if ( !(tempChar>='a' && tempChar<='z') && !(tempChar>='A' && tempChar<='Z')) {
return result;
}
for (int i = 0; i < str.length(); i++) {
if (str.charAt(i) == tempChar) {
tempCount++;
} else {
break;
}
}
str = str.substring(tempCount);
if (tempCount > maxCount) {
maxCount = tempCount;
maxChar = tempChar;
}
}
return "way1:"+maxChar + "," + maxCount;
}
/** 别人做的, 惊为天人, 但正则表达式需要改进一下
* (测试aaaabbbbbbbaaaaaaaaabbbbbbddddddddd有问题) */
public static String maxLength2(String s) {
String rs = "";
Pattern p = Pattern.compile("([a-z|A-Z])//1+");
Matcher m = p.matcher(s);
while (m.find()) {
rs = rs.length() > m.group().length() ? rs : m.group();
}
if (rs.length() > 1) {
return "way2:"+rs.substring(0, 1) + ",," + rs.length();
} else {
return "GOD";
}
}
/** 别人做的, 小巧精悍, 原来的有问题, 修改了一下 */
public static String maxLength3(String str) {
char[] array = str.toCharArray();
char ch = array[0],maxCh = array[0];
int count = 1,maxCount =1;
String result = "输入串有错!";
if (str.length()>40) {
return result;
}
for (int i = 1; i < array.length ; i++) {
if ( !(array[i]>='a' && array[i]<='z') && !(array[i]>='A' && array[i]<='Z')) {
return result;
}
if (ch == array[i]) {
count++;
if (maxCount < count) {
maxCount = count;
maxCh = ch;
}
} else {
count = 1;
ch = array[i];
}
}
return "way3:"+maxCh + "," + maxCount;
}
}

相关文章:

  • 两个最容易被人忽略的基本代码优化技术
  • Windows的达尔文进化图
  • 算法面试:精选微软经典的算法面试100题(第1-20题)
  • 讨论PV原语、解答PV疑惑
  • 一个PV操作题引发的思考,如何看待进程间同步、互斥
  • windows中控制台中在同一行打印信息
  • 《Linux内核修炼之道》精华分享与讨论(5)——Kernel地图:Kconfig与Makefile
  • 《Linux内核修炼之道》 之 高效学习Linux驱动开发
  • 《Linux内核修炼之道》 之 高效学习Linux内核
  • 嵌入式系统开发:Arm与Linux的完美结合
  • 浅析如何学习基于ARM平台的嵌入式系统
  • 谢尔宾斯基三角(Sierpinski triangle)的显示 (with OpenGL)
  • 把C++/CLI委托传入本地代码
  • 在win2003下配置ASP.NET 2.0的IIS并用域名发布
  • 在64bit Win7下使用低版本的EW430开发环境
  • angular2 简述
  • IndexedDB
  • JavaScript DOM 10 - 滚动
  • KMP算法及优化
  • k个最大的数及变种小结
  • Laravel Mix运行时关于es2015报错解决方案
  • Laravel5.4 Queues队列学习
  • Mac 鼠须管 Rime 输入法 安装五笔输入法 教程
  • Median of Two Sorted Arrays
  • vue-cli在webpack的配置文件探究
  • 阿里云前端周刊 - 第 26 期
  • 从零开始在ubuntu上搭建node开发环境
  • 分类模型——Logistics Regression
  • 聊聊spring cloud的LoadBalancerAutoConfiguration
  • 扑朔迷离的属性和特性【彻底弄清】
  • 手机app有了短信验证码还有没必要有图片验证码?
  • 微信小程序设置上一页数据
  • 在electron中实现跨域请求,无需更改服务器端设置
  • 【云吞铺子】性能抖动剖析(二)
  • 格斗健身潮牌24KiCK获近千万Pre-A轮融资,用户留存高达9个月 ...
  • 扩展资源服务器解决oauth2 性能瓶颈
  • ![CDATA[ ]] 是什么东东
  • (MATLAB)第五章-矩阵运算
  • (大众金融)SQL server面试题(1)-总销售量最少的3个型号的车及其总销售量
  • (分布式缓存)Redis持久化
  • (汇总)os模块以及shutil模块对文件的操作
  • (算法)Travel Information Center
  • (转载)深入super,看Python如何解决钻石继承难题
  • (最优化理论与方法)第二章最优化所需基础知识-第三节:重要凸集举例
  • .NET Remoting Basic(10)-创建不同宿主的客户端与服务器端
  • .net Stream篇(六)
  • .net websocket 获取http登录的用户_如何解密浏览器的登录密码?获取浏览器内用户信息?...
  • .NET/C# 的字符串暂存池
  • .net和jar包windows服务部署
  • .net使用excel的cells对象没有value方法——学习.net的Excel工作表问题
  • .Net中的集合
  • /var/lib/dpkg/lock 锁定问题
  • @ConditionalOnProperty注解使用说明
  • @html.ActionLink的几种参数格式
  • [].shift.call( arguments ) 和 [].slice.call( arguments )