算法: 替换空格

本文探讨了将字符串中空格替换成%20的三种方法,包括使用replace()函数、StringBuffer类及自定义数组操作。重点分析了数组长度控制及避免越界问题。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

问题描述

替换空格:请实现一个函数,把字符串 s 中的每个空格替换成"%20"。
输入:s = “We are happy.”
输出:“We%20are%20happy.”

解决方案

第一种,这种是我拿到题目就想到了的方法,直接调用replace()方法,一顿替换就完事了,后来发现不对劲,数组会出现越界的问题。
第二种,调用StringBuffer类,用里面的的一些方法对数组进行操作,最后输出数组。这种方法比较直观,但依旧不符合题意,会出现数组越界的问题。
第三种,先定义一个数组,长度为原字符串的三倍,然后定义一个变量,遍历数组,每当遇到一个空格,变量自增3,遇到字符就进行输出,最后把数组转换为字符串。

代码

        String s = "We are happy.";
		//第一种方法 
        s=s.replace(" ","%20");
        System.out.println(s);

		//第二种方法
        StringBuffer sb= new StringBuffer();
        for(int i = 0 ; i < s.length(); i++){
            char c = s.charAt(i);
            if(c == ' ') {
                sb.append("%20");
            }
            else {
                sb.append(c);
            }
        }
        System.out.println(sb);

		 
        //第三种方法
        int i = s.length();
        int nums = 0;
        char[] arr = new char[i*3];
        for (int l=0;l<i;l++){
            char c = s.charAt(l);
            if (c==' '){
                nums += 3;
                arr[--nums] = '0';
                arr[--nums] = '2';
                arr[--nums] = '%';
                nums += 3;
            }else{
                arr[nums] = c;
                nums +=1;
            }
        }
        s = String.valueOf(arr);
        System.out.println(s);

总结

第一种方法不符合题意不说,第二种和第三种方法,在思路上基本是一致的,都是先定位空格,然后进行转换,但在操作的顺序上有很大的不同。第二种方法并没有注意数组的长的,很容易出现数组越界的问题,而第三种方法事先定义了数组的三倍长度(定义三倍长的原因是因为如果字符串里全是空格,那么转换之后的长度就是原长的三倍),让后让变量自增,最后转化为字符串。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值