我如何用字符串计算重复数?

时间:2017-11-20 14:07:02

标签: java

我是编程的新手,我正在使用字符串进行开发,我还没有使用Hash Maps我唯一的问题是最后一个字母。例如s的最后一个字母该值包含2而不是1。我怎样才能做到这一点?

public static void main(String[] args) {   

    String word = "Chris", 
        curr_char,
        next_char;
    int length_string = word.length(), 
        count = 0;
    char end_letter = word.charAt(word.length()-1);
    String end =  Character.toString(end_letter);
    for(int index = 0; index < word.length(); index++)
    {
        curr_char = word.substring(index, index+1);

        for(int next_index = 0;next_index<word.length(); next_index++)
        {
            next_char  = word.substring(next_index, next_index+1);
            if (curr_char.equalsIgnoreCase(next_char))
            {
                count = 1;
            }
            if(curr_char.contains(end))
            {
                 count = count + 1;
            }
        }
        System.out.println(word.charAt(index) + " " + count);   
    }
}

2 个答案:

答案 0 :(得分:0)

您的算法逻辑存在一些问题。该算法不适用于诸如&#34; Chriss&#34;等字符串。或&#34; Chcriss&#34;。你输出的输入字符串&#34; Chriss&#34;会是

C p 1 h 1
r 1
我1 s 2
s 1

此外,您有2次迭代,这使得算法效率不高。要有效的算法应该花费更少的时间(高速)和更少的空间(更少的记忆)。

上述问题通常通过使用大小为26的整数数组(例如 charArrayCount )来解决,因为英文字母中有26个字母。该整数数组的每个元素代表字母表中的字符&amp;用于计算字符串中出现的次数。你将迭代你的字符串中的每个字符&amp;使用公式,

charArrayCount[25 - ('z' - ch)] += 1;  

其中&#39; ch&#39;将是你的字符串中的一个字符。然后,您可以遍历数组&#39; charArrayCount&#39; &amp;得到那些值&gt;你需要照顾大写和大写。小写字符。

在这种情况下,你只需要通过字符串&amp;无论你的字符串有多长,比如一千个字符,你只为26个元素的整数数组创建空间。

试试这个&amp;看看它是否有帮助。

答案 1 :(得分:-1)

此代码现在运行完美:

public static void main(String args[]) {

 String word = "Chris" , curr_char , next_char;
 int length_string = word.length();
 char end_letter = word.charAt(word.length()-1);
 String end =  Character.toString(end_letter);

 for(int index = 0; index <word.length(); index++)
 {
  int count = 0; //resetting the value of count every time
  curr_char = word.substring(index, index+1);


  for(int next_index = 0;next_index<word.length(); next_index++)
  {
     next_char  = word.substring(next_index, next_index+1);
     if (curr_char.equalsIgnoreCase(next_char))
     {
     count = count + 1;
     //if any character repeats it increase the value of count
     }

 }
System.out.println(word.charAt(index) + " " + count);   
}

}

测试一次......