我们给了一个字符串,例如,取“ TUOPPPPJHHTT”。我们希望找出哪个字符在字符串中连续出现次数最多以及发生多少次。在这种情况下,其P发生4次。
我尝试如下运行for循环
char[] array = S.toCharArray();
int count=1;
for(int i =1; i < S.length(); i++) {
if(array[i] == array[i-1]) {
count++;
}
}
但是用这种方法,问题是它将计算所有字母的重复出现。
每次找到与上一个字符不同的字符,则表示运行(连续重复的字母)结束,因此您应记下当前运行的长度(即的值count
),然后重置计数。最后,您可以打印最大值。
char[] array = S.toCharArray()
int count = 1;
int max = 0;
char maxChar = 0;
for(int i=1; i<array.length; i++){ // Start from 1 since we want to compare it with the char in index 0
if(array[i]==array[i-1]){
count++;
} else {
if(count>max){ // Record current run length, is it the maximum?
max=count;
maxChar=array[i-1];
}
count = 1; // Reset the count
}
}
if(count>max){
max=count; // This is to account for the last run
maxChar=array[array.length-1];
}
System.out.println("Longest run: "+max+", for the character "+maxChar); // Print the maximum.
问题内容: 我有像这样的字符串“ aaaabbbccccaaddddcfggghhhh”,我想删除重复的字符,得到像这样的字符串“ abcadcfgh”。 一个简单的实现是: 使用正则表达式是否可能有更好的实现? 问题答案: 你可以这样做: 正则表达式使用反向引用和捕获组。 正常的正则表达式是,但是您必须在Java中使用另一个反斜杠来使反斜杠转义。 如果您想要重复的字符数: 演示版
我目前正在解决以下黑客问题https://www.hackerrank.com/challenges/reduced-string/problem,在给定字符串的情况下,我必须消除相同的字符对。 我的代码如下: 它在大多数情况下都能工作,但是在某些测试用例中,比如如果字符串是“baab”,代码输出“bb”(baab应该简化为bb,然后变成空字符串),而不是空字符串,但是我不明白为什么会这样。
我需要编写一个静态方法,该方法将作为参数,并返回一个新的。例如,如果我将“Maaaakkee”作为输入,它将返回“make”。我已经尝试了下面的代码,但它似乎没有显示最后一个字符。下面是我的代码:
题目描述 输入一个字符串(只包含 a~z 的字符),求其最长不含重复字符的子字符串的长度。例如对于 arabcacfr,最长不含重复字符的子字符串为 acfr,长度为 4。 解题思路 // java public int longestSubStringWithoutDuplication(String str) { int curLen = 0; int maxLen = 0;
问题 你想重复一个字符串。 解决方案 创建一个包含 n+1 个空元素的数组,然后用要重复的字符串作为连接字符将数组元素拼接到一起: # 创建包含10个foo的字符串 Array(11).join 'foo' # => "foofoofoofoofoofoofoofoofoofoo" 为字符串重复方法 你也可以在字符串的原型中为其创建方法。它十分简单: # 为所有的字符串添加重复方法,这会重复返回
假设我有一根绳子 我想把“AA”替换成“BB”,但只能是最后一次出现,就像这样: string.replace()和string.replaceFirst()都不能完成这项工作。有string.replaceLast()吗?如果没有,会有一个还是有替代方案也可以处理正则表达式?