1月13
题目一:重复的字符串(力扣459)
给定一个非空的字符串 s
,检查是否可以通过由它的一个子串重复多次构成。
示例 1:
输入: s = "abab" 输出: true 解释: 可由子串 "ab" 重复两次构成。
示例 2:
输入: s = "aba" 输出: false
示例 3:
输入: s = "abcabcabcabc" 输出: true 解释: 可由子串 "abc" 重复四次构成。 (或子串 "abcabc" 重复两次构成。)
思路:
判断字符串s是否由重复子串组成,只要两个s拼接在一起,里面还出现一个s的话,就说明是由重复子串组成
substring()函数它的作用 是从字符串temp中提取一个子字符串,该子字符串的起始位置是1,结束位置是temp字符串的长度减1。这意味着,它会去掉temp字符串的第一个字符和最后一个字符。
比如:abab
abababab————bababa ——abab
indexOf() 是Java语言中的字符串函数。它的作用是判断字符串temp中是否包含子字符串s。如果不包含,返回值为-1
题解:
class Solution {
public boolean repeatedSubstringPattern(String s) {
String temp = s + s;
temp = temp.substring(1, temp.length() - 1);
if (temp.indexOf(s) > - 1) {
return true;
}
return false;
}
}
题目二:有效的字母异位词(力扣 242)
给定两个字符串 s
和 t
,编写一个函数来判断 t
是否是 s
的字母异位词。
注意:若 s
和 t
中每个字符出现的次数都相同,则称 s
和 t
互为字母异位词。
示例 1:
输入: s = "anagram", t = "nagaram" 输出: true
示例 2:
输入: s = "rat", t = "car" 输出: false
思路:
- 先判断两字符串的长度是否一样,如果不一样直接返回false
- 将两字符串转为字符数组,在利用sort()函数将字符数组排序,接着利用equals()函数判断两字符串是否相等
题解:
class Solution {
public boolean isAnagram(String s, String t) {
if (s.length() != t.length()) {
return false;
}
char[] str1 = s.toCharArray();
char[] str2 = t.toCharArray();
Arrays.sort(str1);
Arrays.sort(str2);
return Arrays.equals(str1, str2);
}
}