比較兩個字符串A和B,確定A中是否包含B中所有的字符


最近在刷題,碰到一個判斷字符串中字符出現的問題,問題如下:

比較兩個字符串A和B,確定A中是否包含B中所有的字符。

 

如題

給出 A = "ABCD" B = "ACD",返回 true 

給出 A = "ABCD" B = "AABC", 返回 true 

在 A 中出現的 B 字符串里的字符不需要連續或者有序。第二個也為true的原因是因為AA出現兩次,但確實都在A字符串中出現了。

第一次看到題目時沒有仔細,看成B可以作為A的子串,因而想這個直接就可以contains方法來確定

1  String a="ABCDEFG";
2  String b="ABC";
3  String c="ACD";
4 5  boolean b1=a.contains(b);
6  boolean b2=a.contains(c);
7  System.out.println(b1);
8  System.out.println(b2);

 

如此很明顯結果為

 true 

 false 

但仔細審題后,發現的是在A中包含B中的所有字符,這樣的話,那么第二個也應該為true才對。

那么這樣,根據上面的代碼,則考慮只需要在A中用contains方法判斷一下所有B中的字符是否存在,若全部存在,則為true,否則即為false。最終實現代碼如下:

 1 public static boolean containsAllChars(String a, String b) {
 2       //a,b 若為空,則沒有比較的意義了。
 3       if(a==null) {
 4           return false;
 5       }
 6       if(b==null) {
 7           return false;
 8       }
 9       char[] bChars=b.toCharArray();
10     //提供包含標示,默認為包含
11       boolean flag=true;
12       for(char c:bChars) {
13           //+號僅僅是將c轉換成字符串。也可以用c.toString();替代。
14           if(!a.contains(c+"")) {
15               //只要有一個字符不包含在a串中,則置結果為false並退出循環。
16               flag=false;
17               break;
18           }
19       }
20       return flag;
21   }

接下來,提供幾個字符串進行驗證:

 1 String a="ABCD EFG";
 2 String b="ABBC";
 3 String c="HACD";
 4 String d="AB C";
 5 boolean b1=TestStrContains.containsAllChars(a, b);
 6 boolean b2=TestStrContains.containsAllChars(a, c);
 7 boolean b3=TestStrContains.containsAllChars(a, d);
 8 System.out.println(b1);
 9 System.out.println(b2);
10 System.out.println(b3);

案例中,包含有空格,同時對校驗的B字符串也含三個case,

1、重復字符

2、不存在的字符。

3、空格。

對應輸出的結果為:

 true false true 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM