问题1:反转字符串参数,并作为方法结果返回 问题2:统计字符串中每个字母出现的次数,以Map结构返回 问题3:打印出现次数最多的字母及其次数 问题4: 返回不含有重复字符的最长子串
时间: 2023-12-20 19:04:44 浏览: 79
好的,让我来回答您的问题。
1. 反转字符串的方法实现如下:
```java
public String reverseString(String str) {
char[] arr = str.toCharArray();
int left = 0, right = arr.length - 1;
while (left < right) {
char temp = arr[left];
arr[left++] = arr[right];
arr[right--] = temp;
}
return new String(arr);
}
```
2. 统计字符串中每个字母出现的次数,以Map结构返回的方法实现如下:
```java
public Map<Character, Integer> countLetters(String str) {
Map<Character, Integer> map = new HashMap<>();
for (char c : str.toCharArray()) {
map.put(c, map.getOrDefault(c, 0) + 1);
}
return map;
}
```
3. 打印出现次数最多的字母及其次数的方法实现如下:
```java
public void printMostFrequentLetter(String str) {
Map<Character, Integer> map = countLetters(str);
int maxCount = Integer.MIN_VALUE;
char maxChar = '\u0000';
for (Map.Entry<Character, Integer> entry : map.entrySet()) {
if (entry.getValue() > maxCount) {
maxCount = entry.getValue();
maxChar = entry.getKey();
}
}
System.out.println("出现次数最多的字母是:" + maxChar + ",出现次数为:" + maxCount);
}
```
4. 返回不含有重复字符的最长子串的方法实现如下:
```java
public String longestSubstringWithoutRepeatingCharacters(String str) {
int[] freq = new int[256];
int left = 0, right = -1;
int len = 0, start = 0;
while (left < str.length()) {
if (right + 1 < str.length() && freq[str.charAt(right + 1)] == 0) {
freq[str.charAt(++right)]++;
} else {
freq[str.charAt(left++)]--;
}
if (right - left + 1 > len) {
len = right - left + 1;
start = left;
}
}
return str.substring(start, start + len);
}
```
以上就是我对您提出的问题的回答了,希望可以帮到您。如果您还有其他问题可以继续提出。感谢您使用ChitGPT进行对话。
阅读全文