算法练习(十)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; } }