取出一个字符串中连续有相同字母的最大个数及该字母,例:
字符串:aaaddxxxxxxxdddxxx
返回值:x,7
如果最大位数有多个,则反回第一个,例:
字符串:aaabbb
返回值:a,3
字符中取值范围(a-z)和(A-Z)之间,且最大字符位数为40;我的程序:
public class Letter
{
public String find(String message)
{
String letter;
int num = 0;
for (int i=0;i<message.length();i++)
{
int n = 0;
for(int j=i;j<message.length();j++)
{
if(message[j]=message[i])
{
n ++ ;
}
}
if(n > num)
{
num = n;
letter = message[i];
}
}
return (letter+","+num);
}
public static void main(String args[])
{
Letter l = new Letter();
String s = l.find("dddaaadddd");
System.out.println(s);
}
}错误提示:
Letter.java:12: array required, but java.lang.String found
if(message[j]=message[i])
^
Letter.java:12: array required, but java.lang.String found
if(message[j]=message[i])
^
Letter.java:20: array required, but java.lang.String found
letter = message[i];
^
3 errors===================================================================
字符串不能当数组来操作吗?
另外取值范围那个要求是不是我也要写?如果要写该怎么实现这个方法?
字符串:aaaddxxxxxxxdddxxx
返回值:x,7
如果最大位数有多个,则反回第一个,例:
字符串:aaabbb
返回值:a,3
字符中取值范围(a-z)和(A-Z)之间,且最大字符位数为40;我的程序:
public class Letter
{
public String find(String message)
{
String letter;
int num = 0;
for (int i=0;i<message.length();i++)
{
int n = 0;
for(int j=i;j<message.length();j++)
{
if(message[j]=message[i])
{
n ++ ;
}
}
if(n > num)
{
num = n;
letter = message[i];
}
}
return (letter+","+num);
}
public static void main(String args[])
{
Letter l = new Letter();
String s = l.find("dddaaadddd");
System.out.println(s);
}
}错误提示:
Letter.java:12: array required, but java.lang.String found
if(message[j]=message[i])
^
Letter.java:12: array required, but java.lang.String found
if(message[j]=message[i])
^
Letter.java:20: array required, but java.lang.String found
letter = message[i];
^
3 errors===================================================================
字符串不能当数组来操作吗?
另外取值范围那个要求是不是我也要写?如果要写该怎么实现这个方法?
这句话改为
if(message[j]==message[i])
你再试一下
另外这样的算法效率太低了,比如说你发现第1-第3个字符相同而第4个不同,就应该直接跳到第4个开始比较啊,这是建议,我只是按照你的思路作了修改
public class Letter
{
public String find(String message)
{
char letter=' ';
int num = 0;
for (int i=0;i<message.length();i++)
{
int n = 0;
for(int j=i;j<message.length();j++)
{
if(message.charAt(j)==message.charAt(i))
{
n ++ ;
}else break;
}
if(n > num)
{
num = n;
letter = message.charAt(i);
}
}
return (letter+","+num);
}
public static void main(String args[])
{
Letter l = new Letter();
String s = l.find("dddaaadddd");
System.out.println(s);
}
}
纯粹笔误,笔试时写的是==to:zebra007(呼呼)
谢谢,你的程序我调试过了,没有问题
是不是字符串不能当数组来操作?记得以前说字符串就是数组的,难道那只适用于C,而不适用于JAVA吗?
{
//遍历s
int len[] = new int[s.length()];
len[0] = 0;
for (int i=1;i<s.length();i++)
{
if(s.charAt (i)==s.charAt(i-1))
len[i] = len[i-1]+1;
else
len[i] = 0;
}
//找最长字符
int temp = len[0];
int index = 0;
for (int i=1;i<s.length();i++)
{
if(len[i] > temp)
{
temp = len[i];
index = i;
}
}
return s.charAt(index)+","+String.valueOf(temp+1);
}
比如说char[] ca=message.toCharArray();
----------------------------
public class Letter {
private String src;
public Letter(String src){
this.src = src;
}
public int find(String str){
String tmp1 = src;
String tmp2 = new String();
int max=0;
int tmp=0;
do{
tmp2 = tmp1.replaceFirst("("+str+")"+"+", "");
tmp = (tmp1.length() - tmp2.length())/str.length();
if(max<tmp)
max = tmp;
tmp1 = tmp2;
}while(tmp != 0);
return max;
}
public static void main(String args[]){
System.out.println(new Letter("abcabcddddaacdcd").find("cd"));
}
}
这个功能我要怎样实现?
int i = 0; //工作指针
int j = 0; //结果,即为次数
char temp; //临时字符
char result = ' '; //结果字符
for (int begin = 0; begin < s.length(); begin++) {
temp = s.charAt(begin);
if (begin + 1 == s.length())
break;
if (temp == s.charAt(begin + 1)) {
i++;
} else {
if (i > j){
j = i + 1;
result = temp;
}
i = 0;
}
}
return (result+", "+j);
}请大家指正
public String find(String str){
String return_value="";
int max_num=0;
int temp_num=1;
if(str.length()<40){
System.out.println("the length is:"+str.length());
for(int i=0;i<str.length()-1;i++){
if((str.charAt(i)>'a'&&str.charAt(i)<'z')||(str.charAt(i)>'A'&&str.charAt(i)<'Z')){
if(str.charAt(i)==str.charAt(i+1)){
temp_num++;
}else{
temp_num=1;
}
if(temp_num>max_num){
max_num=temp_num;
return_value=String.valueOf(str.charAt(i));
}
}else{
return "字符不在范围(a-z)和(A-Z)之间";
}
}
return return_value+","+String.valueOf(max_num);
}else{
return "最大字符位数大于40";
}
}
public static void main(String[] args) {
Letter lt = new Letter();
String find_result=lt.find("TGGGDFGFGGG");
System.out.println("结果是:"+find_result);
}
}
String resurt="";
char []c=null;
char d;
String a;
String b;
c=insert.toCharArray();
a=String.valueOf(c[0]);
b=a;
for(int j=1;j<c.length;j++){
if(c[j-1]==c[j]){
a+=String.valueOf(c[j]);
}
else{
a=String.valueOf(c[j]);
}
if(a.length()>b.length()){
b=a;
resurt=b;
}
}
return resurt;
}
改一下应该可以
{
public String find(String message)
{
char c = '\0';
int max_count = 0;
for (int i=0; i<message.length(); )
{
for (j=i+1; j<message.length(); j++)
{
if (message.charAt(i)!=message.charAt(j)) {break;}
}
if (j-i > max_count)
{
c = message.charAt(i);
max_count = j-i;
}
i = j;
}
return (c + "," + max_count);
}
public static void main(String args[])
{
Letter l = new Letter();
String s = l.find("dddaaadddd");
System.out.println(s);
}
}
public class AA {
public static char getLength(String s) {
int n=0; //相同字符的临时数
int num = 0; //连续字符最多数
char c = s.charAt(0);
char r = ' ';
for(int i=0;i<s.length();i++) {
if(s.charAt(i)==c) {
n++;
}
else {
n = 1;
}
c = s.charAt(i);
if(n>num) {
num = n;
r = s.charAt(i);
}
System.out.println(c+" -- "+n);
}
return r;
}
public static void main(String[] args) {
String s = "aadfdddddddddddsdsdsdsdfffffff";
String r = InvestStr(s);
System.out.println(r);
}
}
测试好像是对的,不知道和你的要求不合
public String maxReplyChar(String source){
int[] charInt = new int[256];
int max=-1;
char maxChar=0;
for(int i=0;i<source.length();i++){
char curChar = source.charAt(i);
if(++charInt[curChar] > max){
max=charInt[curChar];
maxChar=curChar;
}
}
return maxChar + "," + max;
}
char [] is not string
public String Letter(String str) {
String falseStr = "字符中取值范围(a-z)和(A-Z)之间,且最大字符位数为40";
int maxLen = str.length();
char[] strs = str.toCharArray();
int max = 0;
char maxChar = 0;
for (int i = 0; i < str.length() - 1; i++) {
int n = 0;
for (int j = i; j < str.length(); j++) {
if ((!('a' <= strs[i] && strs[i] <= 'z'))
&& (!('A' <= strs[i] && strs[i] <= 'Z'))&&(str.length()>40)) {
return falseStr;
}
if (strs[i] == strs[j]) {
n++;
}
if (strs[i] != strs[j]) {
break;
}
}
if (n > max) {
max = n;
maxChar = strs[i];
}
}
return maxChar + "," + max;
}
public static void main(String[] args) {
String aa = "aa";
char[] strs = aa.toCharArray();
// aa.length();
Letter letter = new Letter();
System.out.println(letter.Letter(aa));
System.out.println(aa.length());
// System.out.println(strs[0]);
}
}
陌生男子说:"上个礼拜,你带着你的女秘书南下偷情,对不对??"
已婚男人说:"干你什么事!"
陌生男子此时掏出一大迭照片后说:"全部的过程都被我偷拍下来了,你打算怎么办....??
已婚男人将照片逐一看过后说:"好吧!!.....我全部加洗一张!!"如果觉得笑话,不错,又有兴趣赚钱的好友。可以去看看!
谢谢支持上网,挣钱两不误,也许你听说过,但是未必你试过,
特点:1 全自动,只要挂机后最小化就行,
2 这是一个新网站,注册人数还不多,比较容易发展下线,大家要抓住机会
3 最小化后屏幕上什么都没有,真正一点都没有影响
4 放心,绝对不是病毒!是病毒我不是人!
5 免费一试,绝对没任何损失,反而很可能有很大的收获哦。
只要到http://www.8qu.net/register.asp?net=zengzhengliang注册后,下载tongbao.exe挂机就可以赚RMB也可以换Q币,跟挂QQ差不多,最小化后就不用管它了,点数自动会增加的。使用前,务必看一下通宝的使用方法。
private int maxCount;
private char [] chars;
public FindChar(String str){
chars = str.toCharArray();
maxCount = 0;
}
public void find(){
if(chars.length == 0){
System.out.println("String len is 0 !");
return;
}
maxChar = chars[0];
maxCount = 1;
if(chars.length == 1){
return;
}
int temp = 1;
for(int i = 1;i<chars.length;i++){
if(chars[i] == chars[i-1]){
temp++;
if(temp>maxCount){
maxChar = chars[i-1];
maxCount = temp;
}
}
else{
temp = 1;
}
}
System.out.println("maxChar = "+maxChar+" , maxCount = "+maxCount);
}
public static void main(String[] args) {
FindChar str = new FindChar("acacaa");
str.find();
}
}