获取两个字符串中最大相同字符串。比如str1=”abchellofgh”,str2=”acdhellob”。

此时两个字符串只有一个最大相同字符串

关于String算法 - 图1

  1. public String getMaxCommonStr(String str1,String str2){
  2. String maxStr = (str1.length() >= str2.length()) ? str1 : str2;
  3. String minStr = (str1.length() < str2.length()) ? str1 : str2;
  4. int length = minStr.length();
  5. for(int i=0;i<length;i++){
  6. for(int x=0,y=length-i;y<=length;x++,y++){
  7. String substring = minStr.substring(x, y);
  8. boolean contains = maxStr.contains(substring);
  9. if(contains){
  10. return substring;
  11. }
  12. }
  13. }
  14. return null;
  15. }

如果有多个最大相同字符串,可以使用集合来存储

  1. public List<String> getMaxCommonStr(String str1, String str2){
  2. String maxStr = (str1.length() >= str2.length()) ? str1 : str2;
  3. String minStr = (str1.length() < str2.length()) ? str1 : str2;
  4. List<String> strings = new ArrayList<String>();
  5. int length = minStr.length();
  6. for(int i=0;i<length;i++){
  7. for(int x=0,y=length-i;y<=length;x++,y++){
  8. String substring = minStr.substring(x, y);
  9. boolean contains = maxStr.contains(substring);
  10. if(contains){
  11. strings.add(substring);
  12. }
  13. }
  14. //内部for循环结束后,如果集合长度不为0,则证明找到了最大的相同字符串,程序不需要继续进行了。
  15. if(strings.size()!=0){
  16. return strings;
  17. }
  18. }
  19. return null;
  20. }