被这个测试用例虐的死去活来。拆东墙补西墙,终于实现了,mark一下
Implement strStr().
Return the index of the first occurrence of needle in haystack, or -1 if needle is not part of haystack.
Example 1:
Input: haystack = "hello", needle = "ll" Output: 2
Example 2:
Input: haystack = "aaaaa", needle = "bba" Output: -1
Clarification:
What should we return when needle
is an empty string? This is a great question to ask during an interview.
For the purpose of this problem, we will return 0 when needle
is an empty string. This is consistent to C's strstr() and Java's indexOf().
public int strStr(String haystack, String needle) {
/**给定指定的字符串,返回其位置,没有的话返回-1*/
if (needle.equals(haystack)) {
return 0;
} else if (needle.equals("") && !haystack.equals("")) {
return 0;
} else if (!needle.equals("") && haystack.equals("")) {
return -1;
}
int i = 0;
int j = 0;
int k = 0;
boolean flag = false;
while (i < haystack.length() && j < haystack.length()) {
if (needle.charAt(k) == haystack.charAt(j)) {
//如果没到b最后,k++,到了就break
if (k < needle.length() - 1) {
k++;
} else {
flag = true;
break;
}
j++;
} else {
//如果不同就k置为0,i++,j从i再重新开始
k = 0;
i = i + 1;
j = i;
}
}
if (k == needle.length() - 1 && flag == true) {
return i;
} else {
return -1;
}
}
public static void main(String[] args) {
LT l = new LT();
ListNode node1 = new ListNode(1);
ListNode node2 = new ListNode(2);
ListNode node3 = new ListNode(4);
ListNode node4 = new ListNode(1);
ListNode node5 = new ListNode(5);
ListNode node6 = new ListNode(6);
node1.next = node2;
node2.next = node3;
node4.next = node5;
node5.next = node6;
System.out.println(l.strStr("mississippq","m"));
System.out.println(l.strStr("mississipiq", "iq"));
System.out.println(l.strStr("hello","ll"));
System.out.println(l.strStr("aaaa","bba"));
}
}
class ListNode {
int val;
ListNode next;
ListNode(int x) {
val = x;
}
}