码迷,mamicode.com
首页 > 其他好文 > 详细

Implement strStr() Leetcode

时间:2017-06-16 10:08:33      阅读:107      评论:0      收藏:0      [点我收藏+]

标签:字符串   question   swa   string   子串   har   public   c++   stack   

Implement strStr().

Returns the index of the first occurrence of needle in haystack, or -1 if needle is not part of haystack.

 

真是要崩溃了。。。这道题好像是第三遍做了还是做不利索。。。= =
 
public class Solution {
    public int strStr(String haystack, String needle) {
        if (haystack == null || haystack.length() == 0) {
            return needle == null || needle.length() == 0 ? 0 : -1;
        }
        if (needle == null || needle.length() == 0) {
            return 0;
        }
        for (int i = 0; i < haystack.length(); i++) {
            for (int j = 0; j < needle.length(); j++) {
                if (i + j >= haystack.length()) {
                    return -1;
                }
                if (haystack.charAt(i + j) != needle.charAt(j)) {
                    break;
                }
                if (j == needle.length() - 1) {
                    return i;
                }
            }
        }
        return -1;
    }
}

需要注意的有以下几点:

1. i + j >= haystack.length()的时候直接return -1,没有必要看后面的了。因为这个时候第二个已经比第一个可以比较的子串长度长了。

2. 不是单层循环就可以的,因为每个值都可能是开始的值。

3. j == needle.length() - 1要放在判断下面,因为如果第二个字符串长度为一,就直接返回0了。

 

C++写法:

class Solution {
public:
    string reverseVowels(string s) {
        int i = 0, j = s.size() - 1;
        while (i < j) {
            i = s.find_first_of("aeiouAEIOU", i);
            j = s.find_last_of("aeiouAEIOU", j);
            if (i < j) {
                swap(s[i++], s[j--]);
            }
        }
        return s;
    }
};

find_first_of和find_last_of还挺好用的。

Implement strStr() Leetcode

标签:字符串   question   swa   string   子串   har   public   c++   stack   

原文地址:http://www.cnblogs.com/aprilyang/p/7023037.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!