读书人

有关java 字符串的有关问题请高手帮

发布时间: 2012-01-29 21:39:32 作者: rapoo

有关java 字符串的问题,请高手帮忙~~~
需求就是:如何判断两个字符串 或多个字符串中 相同的字符
比如:String a = "aaabbcc"; String b = "addff" ;String c = "eeffa" ;
如何能判断得出a,b,c字符串中有共同的字符 a 啊

[解决办法]
String a = "aaabbcc";
String b = "addff";
String c = "eeffa";
String[] ss = { a, b, c };
List<String> tmp = new ArrayList<String>();// 用于记录字符串中出现的所有字符
for (String s : ss) {
String[] chars = s.split("");
for (String ch : chars) {
if (!tmp.contains(ch)) {
tmp.add(ch);
}
}
}
List<String> result = new ArrayList<String>();// 用于记录结果
for (String ch : tmp) {
boolean flag = true;
for (String s : ss) {
if (s.indexOf(ch) == -1) {
flag = false;
}
}
if (flag) {
result.add(ch);
}
}
for (String ch : result) {
System.out.print(ch + " ");
}
}
[解决办法]

Java code
public class A {    public String[] getSameAppearWord(String[] strs) {        List<String> list = new ArrayList<String>();        if(strs.length>0) {            Set<String> haveWord = this.getHaveWord(strs[0]);            for(String word : haveWord) {                boolean allHave = true;                for(String oneStr : strs) {                    if(oneStr.indexOf(word) == -1) {                        allHave = false;                        break;                    }                }                if(allHave) list.add(word);            }        }        return list.toArray(new String[]{});    }    //看第一个字符串中不重复的字符有哪些    private Set<String> getHaveWord(String word) {        Set<String> set = new HashSet<String>();        if(word.length()>0) {            for(int i=0;i<word.length()-1;i++) {                set.add(word.substring(i,i+1));            }        }        return set;    }    public static void main(String[] args) {        String a = "aaabbcc";         String b = "addffc" ;        String c = "eeffac" ;         String[] strs = {a,b,c};        A test = new A();        String[] sameAppearWord = test.getSameAppearWord(strs);        for(String str : sameAppearWord) System.out.println(str);    }}
[解决办法]
Java code
public class TestSameChar {    /**     * 判断多个字符串中重复的字符,并打印输出     * @param args     */    public static void main(String[] args) {        String a = "aaabbccfe";         String b = "addffe";        String c = "eeffa";        String totalString[] = {a, b, c};    //先将多个字符串归并到一个字符串数组中,方便取用//字符串数组用来判断下一个取的字符是否已经在数组中存在,如果是则代表取的是重复的字符,直接跳过        char[] arr = new char[a.length()];            System.out.println("重复的字符为:");        for(int i=0; i<a.length(); i++) {            boolean f = true;    //f代表是否找到重复的字符            char ch = a.charAt(i);            if(!isContains(arr, ch)) {    //判断是否取到了重复的字符                arr[i] = ch;    //如果没有,则先将其存储到字符数组中                for(int j=1; j<totalString.length; j++) {    //循环遍历每一个字符串数组                    if(totalString[j].indexOf(ch) == -1) {                        f = false;                        break;                    }                }                if(f)                    System.out.print(ch + " ");            }        }    }        private static boolean isContains(char[] arr, char c) {        for(int i=0; i<arr.length; i++) {            if(arr[i] == c)                return true;        }        return false;    }}
------解决方案--------------------


我再给你一个算法:使用三重循环

Java code
package j2se.string;/** * 找出a b c字符串中含有相同的字母 * @author feng * */public class CsdnOne {    public static void main(String[] args) {        // TODO Auto-generated method stub        TestString ts = new TestString();                ts.testABC();    }}class  TestString{                String a = "aaabbcc";    String b = "addff" ;    String c = "eeffa" ;         public void testABC(){        for(int i=0;i<a.length();i++){            for(int j=0;j<b.length();j++){                for(int k=0;k<c.length();k++){                if(a.charAt(i)==b.charAt(j)){                    if(a.charAt(i)==c.charAt(k)){                        System.out.println("a b c中都含有的字母有:"+a.charAt(i));                    }                }            }            }        }    }}
[解决办法]
学习了~~~丿

读书人网 >J2SE开发

热点推荐