【剑指offer】5.替换空格

在这里插入图片描述
JAVA
java 获取 i 字符位置的值 str.charAt(i)
设置 i位置的值:str.setCharAt(i,’ ');

public class Solution {
    public String replaceSpace(StringBuffer str) {
        int count=0;
    for(int i=0;i<str.length();i++)
            if(str.charAt(i)==' ')
                count++;
        int indexold = str.length()-1; //indexold为为替换前的str下标
        int newlength = str.length() + count*2;//计算空格转换成%20之后的str长度
        int indexnew = newlength-1;//indexold为为把空格替换为%20后的str下标
        str.setLength(newlength);//使str的长度扩大到转换成%20之后的长度,防止下标越界
        for(;indexold>=0 && indexold<newlength;--indexold){ 
            if(str.charAt(indexold)==' '){
                str.setCharAt(indexnew--,'0');
                str.setCharAt(indexnew--,'2');
                str.setCharAt(indexnew--,'%');
            }else
                str.setCharAt(indexnew--,str.charAt(indexold));  
        }
        return str.toString();  
    }
        
  }

C++:
(1)获取i位置的字符 直接就str[i]

class Solution {
public:
	void replaceSpace(char *str,int length) {
       
        int count =0;
        int originalLength=0;
        for(int i =0;i<length;i++)
            if(str[i]==' ')
                count++;
                originalLength;
        int newlength = originalLength+2*count;
        if(newlength>length)
            return ;
        for(int i = length-1;i>=0,count>0;i--){
            if(str[i]!=' ')
                str[i+2*count]=str[i];
            else{
                str[i+2*count]='0';
                str[i+2*count-1]='2';
                str[i+2*count-2]='%';
                --count; 
            }
        }
        
   }
};

猜你喜欢

转载自blog.csdn.net/beauman/article/details/89532374