03-核心类库—>常用类库—>String作业

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;
    }
  1. 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;
    }
}
  1. 字符串压缩:利用字符重复出现的次数,编写一种方法,实现基本的字符串压缩功能。比如,字符串“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);
    }

}
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

高高飞起的勇敢麦当

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值