https://leetcode-cn.com/problems/rotate-string/
构造一个temp,然后每次在最后添加一个元素,然后删除首位元素,最后一比较即可
package t796;
public class Main {
public static void main(String[] args) {
Main main = new Main();
System.out.println(main.rotateString("abcde", "cdeab"));
}
public boolean rotateString(String A, String B) {
if (A.equals(B)) return true;
if (A.length() != B.length()) return false;
String temp = A;
for (int i = 0; i < A.length(); i++) {
temp = newString(temp);
if (temp.equals(B))
return true;
}
return false;
}
public String newString(String s) {
StringBuilder sb = new StringBuilder(s);
sb.append(s.charAt(0));
sb.deleteCharAt(0);
return sb.toString();
}
}
将A首尾相连,然后看新构造出的字符串是否包含B即可
package t796;
public class Main {
public static void main(String[] args) {
Main main = new Main();
System.out.println(main.rotateString("abcde", "cdeab"));
}
public boolean rotateString(String A, String B) {
if (A.equals(B)) return true;
if (A.length() != B.length()) return false;
A = A + A;
return A.contains(B);
}
}
https://leetcode-cn.com/problems/occurrences-after-bigram/
其实就是判断字符串中是否存在连续的first和second字串,我们将text按照空格split后,依次遍历,如果当前词为first,就看看他的下一个词是不是second,如果是则将再下一个词放入list中,最后将list转为数组返回即可。
public String[] findOcurrences(String text, String first, String second) {
List<String> list = new ArrayList<>();
String[] strings = text.split(" ");
for (int i = 0; i < strings.length - 2; i++) {
if (strings[i].equals(first)) {
if (strings[i + 1].equals(second)) {
list.add(strings[i + 2]);
}
}
}
return list.toArray(new String[list.size()]);
}