- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我说的问题是this
问题陈述:
返回给定字符串的一个版本,其中对于字符串中的每个星号 (),星号和紧邻其左右的字符都消失了。所以“abcd”产生“ad”,“ab**cd”也产生“ad”。
starOut("ab*cd") → "广告"
starOut("ab**cd") → "广告"
starOut("sm*eilly") → "傻"
我得到的解决方案有点困惑我使用了大约 6 个 if 语句和一个特定案例的处理,寻找具有较少 ifs 的更清洁的解决方案。
请不要使用超过 1 个循环和集合或正则表达式。
下面是我的解决方案:
public String starOut(String str) {
String result="";
boolean currentFlag=false;
if(str.length()==0)
return result;
for(int i=0;i+1<str.length();i++)
{
if(str.charAt(i)=='*')
{
i+=1;
currentFlag=true;
continue;
}
if(str.charAt(i+1)=='*')
{
i+=2;
continue;
}
if((i>0)&&str.charAt(i-1)=='*')
{
continue;
}
result+=str.substring(i,i+1);
currentFlag=false;
}
if(!(currentFlag)&&(str.length()==3)&&(str.charAt(1)=='*'))
return "";
if((str.charAt(str.length()-1)!='*')&!(currentFlag))
return result+=str.charAt(str.length()-1);
else
return result;
}
最佳答案
伪代码:
遍历字符串中的所有字符。如果您落在星号上,请不要记录它。向左看,如果您看到星号,请不要记录它。如果看到星号,请向右看,不要记录它。如果以上都没有发生,记录下来。
Java代码:
public static String starOut(String s) {
StringBuilder sb = new StringBuilder();
for (int i = 0; i < s.length(); i++) {
if (s.charAt(i) == '*') continue;
if (i > 0 && s.charAt(i - 1) == '*') continue;
if (i < s.length() - 1 && s.charAt(i + 1) == '*') continue;
sb.append(s.charAt(i));
}
return sb.toString();
}
注意:我看到很多弹出的答案都是在循环中连接 String
对象,而不是使用 StringBuilder
.不要那样做。这是very inefficient .
关于java - Java中codingBat谜语starOut高效解法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24093694/
我有以下代码: $value){ if($value == 1){ echo "{$key}, "; } } ?> 如您所见,我用 500 个零填充一个数组,遍历它两
一个 friend 给了我一个谜语: #include #define TOTAL_ELEMENTS ((sizeof(array) / sizeof(array[0]))) int array[
这几天,我一直克制自己的硕士学习,一直专注于这个(看似简单的)难题: 这个 10*10 的网格构成了一个包含 100 个可用地点的正方形。目的是从一个角落开始,根据一些简单的“遍历规则”遍历所有地方,
我正在努力解决这个问题MaxMirror在 CodingBat 上: We'll say that a "mirror" section in an array is a group of conti
有一个矩阵M*N。矩阵元素为黑色或白色。我们将相同颜色的相邻元素称为区域。您可以选择任何区域并翻转它的颜色(即改变所有元素的颜色)。给定这样一个矩阵,找到使整个矩阵变成黑色或白色所需的最小翻转次数。
从三个变量开始,都是System.DateTime。 a: 10/2/2009 2:30:00 PM b: 10/2/2009 2:30:00 PM c: 10/2/2009 2:30:00 PM 相
第一部分:从F#调用F# 假设我们在 F# 中定义了以下类型: type MyClass = static member Overload1 (x, y) = "Pim" static
(不,这不是家庭作业,我只是发现了这个错误并认为在这里分享它可能会有用) import java.util.List; public class BubbleSorter { public >
关闭。这个问题不符合Stack Overflow guidelines .它目前不接受答案。 这个问题似乎不是关于 a specific programming problem, a softwar
我是一名优秀的程序员,十分优秀!