1.编写一个方法,将一段文本中的各个单词的字母顺序翻转, 例如:“I like writing code
best”,将变成"I ekil gnitirw edoc tseb"。
public static void main(String[] args) {
Scanner input = new Scanner(System.in);
String s = input.nextLine();
System.out.println(reverse1(s));
// System.out.println(s);
}
// StringBuffer
public static StringBuffer reverse1(String s) {
String[] ss = s.split(" ");
StringBuffer sb2 = new StringBuffer();
for (int i = 0; i < ss.length; i++) {
StringBuffer sb = new StringBuffer(ss[i]);
sb.reverse();
sb2.append(sb);
if (i == ss.length - 1) {
sb2.append(".");
} else {
sb2.append(" ");
}
}
return sb2;
}
- String s="name=王五 age=18 classNum=1101”; 将上面的字符串中包含的信息存放到 Student(里面有 name,age, classNum 三个属性)的对象中
public class B {
public static void main(String[] args) {
String s = "name=王五 age=18 classNum=1101";
//1. 将字符串切割
String []ss = s.split(" ");//2.定义一个新的字符接收结果
String data[] = new String[3];
//3. 使用for循环遍历字符数组获取每一个元素
for (int i = 0; i < ss.length; i++) {
//4. 获取等号后面的每一个下标
int index = ss[i].indexOf("=")+1; //根据角标值获得对应的元素
data[i] = ss[i].substring(index);
}
Student 王五 = new Student(data[0],data[1],data[2]);
System.out.println("王五的信息: "+王五.getName()+" "+王五.getAge()+" "+王五.getClassNum());
}
}
class Student{
private String name;
private String age;
private String classNum;
public Student() {
}
public Student(String name, String age, String classNum) {
this.name = name;
this.age = age;
this.classNum = classNum;
}
public void setName(String name) {
this.name = name;
}
public void setAge(String age) {
this.age = age;
}
public void setClassNum(String classNum) {
this.classNum = classNum;
}
public String getName() {
return name;
}
public String getAge() {
return age;
}
public String getClassNum() {
return classNum;
}
}
- 字符串压缩:利用字符重复出现的次数,编写一种方法,实现基本的字符串压缩功能。比如,字符串“aabccdd”会变成“a2b1c2d2”。若“压缩”以后的字符 串没有变短,则返回原先的字符串。你可以假设字符串中只包含大小写英文字 母(a-z)
示例 1:输入:aabcccccddddd输出:a2b1c5d5 *
示例 2:输入:“abcdd” 输出:“abcdd”
解释:因为压缩后的字符串为:”a1b1c1d2”,长度大于原字符串 *
来源:力扣(LeetCode) *
链接:面试题01.06
import java.util.Scanner;
public class C {
public static void main(String[] args) {
Scanner in =new Scanner(System.in);
String str =in.next();
System.out.println(StringDo(str));
}
public static Object StringDo(String str) {
int flog=1;
StringBuffer str2=new StringBuffer();//
if(str.length()<=2) {
return str;//输入的str长度小于等于2,一定返回原字符串;
}
for(int i =1;i<str.length();i++) {
if(str.charAt(i-1)==str.charAt(i)) {
flog++;//记录字符出现次数
}else {
str2.append(str.charAt(i-1)).append(flog);
flog=1;//将字符和出现次数写入;
}
}
str2.append(str.charAt(str.length()-1)).append(flog);//最后一个字符要自己额外写入,原因略;
if(str.length()<=str2.length()) {
return str;
}else{
return str2;
}
}
}
【4.】写一个和 trim 功能相同的方法
- 思路:
1.定义两个变量,用来存储两个角标 *
2.分别从头和尾遍历字符串,直到找到第一个不为空格的字符 *
3.截取字符串 */
public class D {
public static void main(String[] args) {
String s = " ab c ";
s = myTrim(s);
//去掉中间的空白地方,不仅仅去掉空格
//s = s.replaceAll("\\s*", "");
System.out.println("-" + s + "-");
}
public static String myTrim(String s) {
int start = 0, end = s.length() - 1;
while (start <= end && s.charAt(start) == ' ') {
start++;
}
while (start <= end && s.charAt(end) == ' ') {
end--;
}
return s.substring(start, end + 1);
}
}