题目:反转字符串 描述:编写一个函数,输入一个字符串,将其反转并返回结果。 解题思路:可以使用两个指针,一个指向字符串的开头,一个指向字符串的末尾,然后不断交换两个指针所指的字符,直到两个指针相遇。 实现代码:
题目:判断字符串是否为回文串 描述:编写一个函数,判断给定的字符串是否为回文串。回文串是指从前往后和从后往前读都一样的字符串。 解题思路:可以使用两个指针,一个指向字符串的开头,一个指向字符串的末尾,分别向中间移动,并比较对应位置的字符是否相等。 实现代码:
public boolean isPalindrome(String s) {
int left = 0, right = s.length() - 1;
while (left < right) {
if (!Character.isLetterOrDigit(s.charAt(left))) {
left++;
} else if (!Character.isLetterOrDigit(s.charAt(right))) {
right--;
} else {
if (Character.toLowerCase(s.charAt(left)) != Character.toLowerCase(s.charAt(right))) {
return false;
}
left++;
right--;
}
}
return true;
}
题目:统计字符出现的次数 描述:编写一个函数,输入一个字符串和一个字符,统计该字符在字符串中出现的次数。 解题思路:可以遍历字符串,用一个计数器记录字符出现的次数。 实现代码:
public int countOccurrences(String s, char c) {
int count = 0;
for (int i = 0; i < s.length(); i++) {
if (s.charAt(i) == c) {
count++;
}
}
return count;
}
题目:找出字符串中的最长单词 描述:编写一个函数,输入一个句子,找出其中的最长单词并返回。假设句子中只包含字母和空格。 解题思路:可以使用split()函数将句子分割成单词,然后遍历所有单词找出最长的一个。 实现代码:
public String longestWord(String sentence) {
String[] words = sentence.split(" ");
String longestWord = "";
for (String word : words) {
if (word.length() > longestWord.length()) {
longestWord = word;
}
}
return longestWord;
}
题目:判断两个字符串是否为异位词 描述:给定两个字符串s和t,判断它们是否是相同字母异序词(即字母相同但顺序不同)。 解题思路:可以使用两个数组分别统计s和t中每个字符出现的次数,然后比较两个数组是否相等。 实现代码:
public boolean isAnagram(String s, String t) {
if (s.length() != t.length()) {
return false;
}
int[] countS = new int[26];
int[] countT = new int[26];
for (int i = 0; i < s.length(); i++) {
countS[s.charAt(i) - 'a']++;
countT[t.charAt(i) - 'a']++;
}
for (int i = 0; i < 26; i++) {
if (countS[i] != countT[i]) {
return false;
}
}
return true;
}