162 - 字符串
Description
对于输入字符串s(假设字符串只包含字母构成的单词和空格),完成如下功能:
- 统计该字符串中字母c出现的次数
- 求该字符串的逆
- 输出该字符串中子串str的所有位置(无需考虑子串叠加现象)
- 将字符串中每个单词的第一个字母变成大写并输出
Input
字符串s
字母c
子串str
Output
c在s中出现的次数
s的逆
str在s中的所有位置
所有单词首字母大写后的字符串
Sample Input
I scream you scream we all scream for icecream
m
eam
Sample Output
4
maerceci rof maercs lla ew maercs uoy maercs I
5 16 30 43
I Scream You Scream We All Scream For Icecream
以下是我的代码:
import java.util.Scanner;
public class Main{
public static void main(String[] args) {
Scanner input = new Scanner(System.in);
String s = input.nextLine(); *//待输入字符串*
String letter = input.nextLine();
char c = letter.charAt(0); /*/待输入字母,因为Java中没有直接读取单个字符的函数,
//所以将字母输入到字符串中,调用String中的charAt()函数
//取第一个字符即为我们想要输入的单个字符*
String str = input.nextLine(); *//待输入子串*
int times = 0; *//字母出现的次数;*
for(int i=0;i<s.length();i++) { *//遍历字符串,求出字符串中字符c出现的次数*
if(s.charAt(i)==c)
times++;
}
System.out.println(times);
String rs = new StringBuilder(s).reverse().toString(); *//利用StringBuilder中的reverse()函数
//求字符串的反转字符串,并转换成String类型
//赋值给re;*
System.out.println(rs);
//StringBuilder scpy = new StringBuilder(s);
int pos = s.indexOf(str); *//indexOf()函数,查找并返回出子串str第一次出现的位置*
boolean flag = true;
while(pos!=-1) { *//String中的查找函数indexOf()查找不成功时返回-1;*
if(flag) { *//当查找成功是,输出该位置,并从该位置之后再次查找*
System.out.print(pos);*//直到字符串中查找不到该字串*
flag = false; *//flag帮助控制输出的格式*
}//if
else
System.out.print(" "+pos);
pos = s.indexOf(str, pos+str.length());
}//while
System.out.println();
StringBuilder uppers = new StringBuilder();
for(int i = 0;i < s.length();i++) *//for循环实现s字符串中的每个单词首字母大写*
{
if(i==0) *//如果i=0,说明是字符串的第一个字符,需要大写*
uppers.append(Character.toUpperCase(s.charAt(i)));
*//appen(char c)函数,在字符串末尾插入一个字符c
//toUpperCase(char c)函数是Wrapper类Character中
//的静态函数,作用是将字符c转换成大写*
else {
if(s.charAt(i-1)==' ') *//如果字符串中i位置之前的字符为空格,说明i位置的字符是
//单词的开头,那么就将i位置的字符换成大写,插入到uppers中*
uppers.append(Character.toUpperCase(s.charAt(i)));
else *//最后一种情况,即i位置的字符既不是字符串的开头也不是单词
//的开头,那么就直接插入到uppers中*
uppers.append(s.charAt(i));
}//else
}//for
s = uppers.toString(); *//将指向s引用指向完成首字母大写的字符串*
System.out.println(s);
}
}