Java里面判断array中的一个string内有没有重复的字母

比如一个Array = ACTG TGA TTGA TGGGGAA TGAC
找出字组如TTGA中有没有重复的字母如TT然后返还array里面有多少个有重复字母的
例子里面就有两个,TTGA 和TGGGGAA如果一个里面有两个字母都重复也只记1

求复制党别来,,,百度上的我都看过了。。

第1个回答  2015-11-01
你直接循环遍历array,针对array中的每个元素,判断该元素是否有重复字母就可以了。追问

怎么特指array里面每个元素的每个字母呢,,,

追答

yugi111 兄的代码中有,针对每个元素,使用

String 元素中位置J的字母 = array中的元素.charAt(位置J) + "";

public static void main(String[] args) {
String[] array = {"ACTG","TGA","TTGA","TGGGGAA","TGAC"};
int hasSameCharCount = 0;
// 循环遍历array
for (int i = 0; i < array.length; i++) {
// 如果一个元素中含有相同的char,加1
if (hasSameChar(array[i])) {
hasSameCharCount++;
}
}
System.out.println("含有相同字母的元素个数为:" + hasSameCharCount);
}

/**
 * 判断str中是否含有相同的char
 * @param str 要检索的字符串
 * @return true:含有相同char<br>false:不含有相同char
 */
public static boolean hasSameChar(String str) {
boolean ret = false;
if (str != null && str.length() > 0) {
for (int i = 0; i < str.length(); i++) {
//获取当前位置的字母
char singleChar = str.charAt(i);
//当前位置到str结尾,是否含有该字母
if (str.indexOf(singleChar, i + 1) != -1) {
//含有该字母,调出循环
ret = true;
break;
}
}
}
return ret;
}

追问

但是他这个不太对。。会多算一个,然而我找不到哪里不对- -自己写的就会变成0。。。。

追答

我贴上了我的代码,然后yugi111兄的代码我也运行了,结果确实是2。
你将你运行的代码直接贴出来看看,肯定是哪里写错了。

本回答被提问者采纳
第2个回答  2015-11-01
public class Yugi{
    public static int joey(String[] array){
        int count = 0;
        for(int i = 0; i < array.length; i++){
            String ai = array[i];
            String tmp = "|" + ai + "|";
            for(int j = 0; j < ai.length(); j++){
                String aij = ai.charAt(j) + "";
                if(tmp.split(aij).length - 1 > 1){
                    count++;
                    break;
                }
            }
        }
        return count;
    }
    public static void main(String[] args){
        String[] array = {"ACTG","TGA","TTGA","TGGGGAA","TGAC"};
        System.out.println(joey(array));
    }
}

追问

= =好像不对,我RUN了一下显示是3。。。但是只有两个呀

追答瞎J8说,不要污蔑别人好么?!要么就采纳,要么别胡说

public class Yugi{
    public static int joey(String[] array){
        int count = 0;
        for(int i = 0; i < array.length; i++){
            String ai = array[i];
            for(int j = 0; j < ai.length(); j++){
                String aij = ai.charAt(j) + "";
                if(ai.replaceAll("[^"+aij+"]", "").length() > 1){
                    count++;
                    break;
                }
            }
        }
        return count;
    }
    public static void main(String[] args){
        String[] array = {"ACTG","TGA","TTGA","TGGGGAA","TGAC"};
        System.out.println(joey(array));
    }
}

追问

能不能不要随时把j8挂在嘴边?好好的问个问题,我也很感谢你的,运行以后有问题我本来是想再请教你一下的,我没运行过我当然不会胡说,最后我删到只剩"ACTG",  "TGA", "TGAC"都显示有1好吗,我哪里污蔑你了?尼玛天天j8j8j8j8j8好好的心情都被你j8掉了

追答

快滚滚,不想跟你说了好吧,你个死脑残,不是在网上,就废了你个死脑残

第3个回答  2015-11-01
可以 用 模式匹配 KMP 算法解决你的问题追问

not helpping

相似回答