算法练习之从String.indexOf的模拟实现开始

2019-12-26 11:19:17刘景俊

易采站长站为您分析算法练习从String.indexOf的模拟实现开始,需要的朋友可以参考下

String.indexOf的模拟实现,没想象中有多么高深的查找算法,就是最普通的遍历查找

思路:先找到第一个相同的字符,然后依次比较后面的字符,若都相等则表示查找成功

  1. /**   * 查找字符串pattern在str中第一次出现的位置  
  2. * @param str   * @param pattern  
  3. * @return   */ 
  4. public int firstIndexOf(String str, String pattern) {   for (int i = 0; i < (str.length() - pattern.length()); i++) {  
  5. int j = 0;   while (j < pattern.length()) {  
  6. if (str.charAt(i + j) != pattern.charAt(j)) break;   j++;  
  7. }   if(j==pattern.length()) return i;  
  8. }   return -1;  
  9. }    
  10. /**   * 查找字符串pattern在str中最后一次出现的位置  
  11. * @param str   * @param pattern  
  12. * @return   */ 
  13. public int lastIndexOf(String str, String pattern) {   for (int i = str.length() - pattern.length(); i >= 0; i--) {  
  14. int j = 0;   while (j < pattern.length()) {  
  15. if (str.charAt(i + j) != pattern.charAt(j)) break;   j++;  
  16. }   if (j == pattern.length()) return i;  
  17. }   return -1;  
  18. }    
  19. /**   * 查找字符串pattern在str中出现的位置  
  20. * @param str   * @param pattern  
  21. * @return   */ 
  22. public List<Integer> indexOf(String str, String pattern) {   List<Integer> indexs = new ArrayList<Integer>();  
  23. for (int i = 0; i < (str.length() - pattern.length()); i++) {   int j = 0;