首页 > 代码库 > Implement strStr() Leetcode
Implement strStr() Leetcode
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
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。