算法练习(十)String类

一、单词倒序

1、题目描述: 输入单行英文句子,里面包含英文字母,空格以及,.? 三种标点符号,请将句子内每个单词进行倒序,并输出倒序后的语句

2、示例如下:

3、代码如下:

import java.util.*;

public class danCiDaoXu {
          
   
    //方法一:倒序输出
    //public static void main(String[] args) {
          
   
    //    Scanner sc=new Scanner(System.in);
    //    boolean isChar=false;
    //    while (sc.hasNext()){
          
   
    //        String str=sc.next();
    //        for(int i=str.length()-1;i>=0;i--){
          
   
    //            if(str.substring(i).equals(".")||str.substring(i).equals(",")){
          
   
    //                isChar=true;
    //                continue;
    //            }
    //            System.out.print(str.substring(i,i+1));
    //        }
    //        if(isChar==true){
          
   
    //            System.out.print(str.substring(str.length()-1));
    //            isChar=false;
    //        }
    //        System.out.print(" ");
    //    }
    //}

    //方法二:翻转输出
    public static void main(String[] args) {
          
   
        Scanner sc=new Scanner(System.in);
        while (sc.hasNext()){
          
   
            String str=sc.next();
            String rev=new StringBuffer(str).reverse().toString();
            String ans="";
            if(rev.substring(0,1).matches("[,.?]")){
          
       //正则表达式
                ans=rev.substring(1)+rev.substring(0,1);
            }else {
          
   
                ans=rev;
            }
            System.out.print(ans+" ");
        }
    }
}

二、分界线

2、示例如下:

3、代码如下:

import java.util.*;

public class fenJieXian {
          
   
    public static void main(String[] args) {
          
   
        Scanner sc=new Scanner(System.in);
        String[] newspaper=sc.nextLine().split(" ");    //切割字符串数组
        String[] anonymousLetter=sc.nextLine().split(" ");
        boolean res=true;
        for (String anony:anonymousLetter){
          
   
            for (int i=0;i<newspaper.length;i++){
          
   
                String news=newspaper[i];
                if(anony.length()==news.length()&&handle(news,anony)){
          
      //长度相等是防止越界
                    newspaper[i]=" ";   //匹配过的就不用再匹配了
                    break;
                }
                if(i==newspaper.length-1){
          
     //如过到最后一个了还没匹配成功,视为失败
                    res=false;
                }
            }
            if(!res){
          
                  //一旦发现有匹配不成功的,直接false
                break;
            }
        }
        System.out.println(res);
    }

    public static boolean handle(String news,String anony){
          
   
        char[] newsChar=news.toCharArray();
        char[] anonyChar=anony.toCharArray();
        Arrays.sort(newsChar);
        Arrays.sort(anonyChar);
        boolean isTrue=true;
        for(int i=0;i<newsChar.length;i++){
          
    //和每一个字符串都尝试匹配
            if(newsChar[i]!=anonyChar[i]){
          
     //只要有一个不匹配,就输出false
                isTrue=false;
            }
        }
        return isTrue;
    }
}
经验分享 程序员 微信小程序 职场和发展