• 28. Implement strStr()


    这是个人刷LeetCode的第一篇博客。之前也在刷题,不过没有记录下来。

    现在才开始进行记录的原因如下:

    1)习惯的养成要由简入繁,由浅到深。因此之前仅仅是进行刷题,先培养好工作日每天刷题的习惯,然后再进行刷题记录。如果一开始就做很多事情,很难养成习惯;

    2)个人刷题的天数已经超过21天,基本养成了刷题习惯,可以进入现在的这一步,在刷完题目之后对自己的解题思路进行记录;

    3)继续遵循习惯的养成规律,这些博客也仅仅是简单地记录个人的解题思路。

     

     

    题目如上,意思为找出needle字符串在haystack中第一次出现的位置,如果haystack中不包含needle,则返回-1。

    这道题首先想到的就是用循环进行解答。

    主要思路为: 遍历haystack,找出haystack中与needle首字母一样的位置,如果找到了,那就继续对比haystack的第二个字母与needle的第二个字母是否相同,这样一一对比,如果对比完所有needle中的字母,那就返回haystack刚刚提到的首字母位置,否则继续找下一个haystack中与needle首字母一样的位置。

    贴上代码:

    class Solution {
        public int strStr(String haystack, String needle) {
            //当needle的字符数目大于haystack, 那么返回-1
            if( haystack.length() < needle.length()){
                return -1;
            }
            
            //所有字符串的前缀都是"",因此当needle为空或"",返回0
            if( needle.length() == 0 || needle == null){
                return 0;
            }
            
            for( int i = 0 ; i <  haystack.length() ; i++){
                //依次对字符进行对比, 要注意已经对比的字符长度跟首字母位置之和不能超过haystack字符长度
                for( int j = 0 ; j < needle.length() && i + j < haystack.length() ; j++){
                    if(haystack.charAt(i + j) != needle.charAt(j)){
                        break;
                    }
                    
                    if( j + 1 == needle.length()){
                        return i;
                    }
                }
            }
            
            return -1;
        }
    }    

     

     

    END

     

  • 相关阅读:
    hdu 3951 Coin Game
    hdu 1273 漫步森林
    hdu 2082 找单词
    kmp算法(模板)
    CodeForces 742B Arpa’s obvious problem and Mehrdad’s terrible solution
    大二上每日总结
    大二上每日总结
    大二上每日总结
    大二上学期周总结
    大二上每日总结
  • 原文地址:https://www.cnblogs.com/sssysukww/p/8690821.html
Copyright © 2020-2023  润新知