如何从String数组中的String中查找重复的char值

时间:2018-02-08 06:18:28

标签: java

我正在尝试从数组中显示重复的字符串但代码不起作用。例如:在单词" arrow" r来了两次shoq代码应该显示输出' r'。但它没有显示任何东西

public class duplicatearray {
        public static void main(String[] args)
        {
            String[] s={"arrow"};
            for(int i=0;i<s.length;i++)
            {
                for(int j=i+1;j<s.length;j++)
                {
                    if(s[i].equals(s[j]))
                    {
                        System.out.println("Duplicate value"+s[i]);
                    }
                }
            }

        }
    }

4 个答案:

答案 0 :(得分:1)

  

例如:在单词&#34; arrow&#34; r来了两次,代码应该显示输出&#39; r&#39;。

您正在检查两个字符串。您想要检查重复字符的位置

if(s[i].equals(s[j]))

应该是

if(s[i].charAt(j) == s[i].charAt(j+1))

然后检查相同字符串中的字符。还有印刷声明

System.out.println("Duplicate value"+s[i].charAt(j));

你循环也错了,你应该从第0个字符

开始
for(int j= 0 ;j<s[i].length() -1 ;j++)

总的来说应该是

String[] s = { "arrow" };
for (int i = 0; i < s.length; i++) {
    for (int j = 0; j < s[i].length() - 1; j++) {
        if (s[i].charAt(j) == s[i].charAt(j + 1)) {
            System.out.println("Duplicate value : " + s[i].charAt(j));
        }
    }
}

答案 1 :(得分:0)

尝试使用以下代码片段它将为您提供所期望的内容。

    public static void main(String[] args) {

            String[] s = {"arrow"};
            for (int k =0; k < s.length; k++) {

            char[] arr = s[k].toCharArray();//get char array

            for (int i = 0; i < arr.length; i++) // 1
            {
                int duplicateCount = 0;
                for (int j = 1; j < arr.length; j++) {
                    if (arr[i] == (arr[j])) {
                        duplicateCount++;//duplicate variable
                        if (duplicateCount >= 2)
                            System.out.println("Duplicate value " + arr[i]);
                    }
                }
            }
        }
    }

答案 2 :(得分:0)

我看到你的代码存在缺陷。

  

String [] s = {&#34; arrow&#34;};

您无需将其声明为数组。只需要一个字符串即可。如果你在这上面调用s [i],它将始终返回&#34; arrow&#34;不是&#39; a&#39;或者&#39; r&#39;正如你所料。你必须有一个char []。

无论如何,我在我的代码中使用了你的输入并打印出必要的语句。通过它。希望它有所帮助。

尝试使用HashSet。它提供了更好的性能。

import java.util.Collection;
import java.util.HashSet;


public class duplicate {

    /**
     * @param args
     */
    public static void main(String[] args) {
        // TODO Auto-generated method stub
        String[] s={"arrow"};
        System.out.println(s[0]);
        HashSet<Character> hash = new HashSet<Character>();
        char[] s1 = s[0].toCharArray();
        for(char c : s1){
            if(!(hash.add(c)))
                System.out.println(c);
        }

    }

}

答案 3 :(得分:0)

你的代码使用两个for循环,随着字符串大小的增加可能需要更多的时间。尝试下面的代码片段

public class DuplicateArray {
    public static void main (String...args) {
        String str = new String("arrow");
        int[] dupArray = new int[256];
        for (int i=0;i<str.length();i++) {
            char ch = str.charAt(i);
            if (dupArray[ch] == 0) {
                dupArray[ch]++;
            } else {
                System.out.println("Duplicate value : "+ch+" ");
            }
        }
    }
}