单词的定义是:完全由字母组成且由空格分开的字符串。例如下面的字符串:
“a hello1 abc goodl”,其中“a”和“abc”是单词,而“hello1”和“good!”不是单词(原因是这两个字符串中包含非字母的字符1和!)。 反转过来的结果就是“a hello1 cba good!” 要求:不使用任何strlen之类的库函数
碰到了两次,在此记录一下
思路是这样的
首先将字符串按照单词拆开,之后再转换成字符数组,然后就进行遍历每个单词。单词中只包含字母就进行反转,反转结果放到容器中,否则就直接保存到容器中,再将容器中的单词用StringBuilder连接到一起,再输出即可。
public class TestStringReverse {
@Test
public void t(){
String s = "a hello1 abc good!";
String[] s1 = s.split(" ");
List<String> strs = new ArrayList<String>();
for (String s2 : s1) {
char[] chars = s2.toCharArray();
boolean flag = true;
for (char c : chars) {
int i = (int) c;
if (!(((i>=65&&i<90)||(i>=97&&i<=122)))){
flag = false;
strs.add(s2);
break;
}
}
if (flag){ //字符串中只包含字母就进行反转
StringBuilder sb = new StringBuilder(s2);
String s3 = sb.reverse().toString();
strs.add(s3);
}
}
//然后将集合放入StringBuilder中按照空格隔开
StringBuilder sb = new StringBuilder();
for (String str : strs) {
sb.append(str);
sb.append(" ");
}
String str = sb.toString();
System.out.println(str);
}
}
输出结果: