java逆置字符串(字符数组)(最简单,易看懂)

java逆置字符串(字符数组)(此字符串中的小字符串使用符号隔开)

要求:不改变使用‘符号’隔开的小字符串中的字符顺序,逆置后也为此格式。
=====》例如:“isd am sad asd lalala” 逆置为:“lalala asd sad am isd”

第一种(代码最少)无特殊输出要求:
输出形式为遍历字符串数组:

     public static void main(String[] args) {
        Scanner in=new Scanner(System.in);
        String str=in.nextLine();
         //split()方法将字符串以空格分隔开并删除空格,顺序输入到一个字符串数组中
         //也可以以其他字符分开,将空格替换为其他的字符也可以
        String[]s=str.split(" ");  
        for (int i=s.length-1;i>=0;i--){
            System.out.print(s[i]);   //从后往前遍历得到字符串数组的元素
            if (i!=0){
                System.out.print(" ");  //如果不为第一个字符串就+空格
            }
        }
    }

第二种(代码也很少)要求输出格式为String字符串:

    public static void main(String[] args) {
        Scanner in=new Scanner(System.in);
        String str=in.nextLine();
        String[]s=str.split(" ");
        StringBuilder stringBuilder=new StringBuilder();
        for (int i=s.length-1;i>=0;i--){
            stringBuilder.append(s[i]);
            if (i!=0){
                stringBuilder.append(" "); //字符串拼接
            }
        }
        String string=stringBuilder.toString();
        System.out.println(string);
    }

第三种(最为繁琐)对字符串方法不熟悉可以使用:

public static void swap(char[] chars,int a,int b){   //逆序字符数组函数swap
    char temp;
    for(;a<b;a++,b--){
        temp=chars[a];
        chars[a]=chars[b];
        chars[b]=temp;
    }
}
public static char[] reversesentence(String str){
    char[] chars=str.toCharArray();  //字符串转换为字符数组
    swap(chars,0,chars.length-1);  //逆序整个字符数组s
    int count=0;
    int j=0;
    int i=0;
    for(;i<chars.length;i++){
        count++;                //count计算当前字符个数(包含空格)
        //此if语句到最后一个小字符串之前的空格结束,导致最后一个小字符串无法逆置
        if(chars[i]==' '){    
            swap(chars,count-j-1,count-2);
            j=0;
        }else
        { j++;}    //j计算两空格之间的字符个数
    }
    //上述for循环到最后一个小字符串之前判空截止, 因此最后一个小字符串单独逆置
    if (i==chars.length){     
        swap(chars,chars.length-j,chars.length-1);
    }
    return chars;
}
   public static void main(String[] args) {
    System.out.println(reversesentence("isd am sad asd lalala"));
}
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值