zoukankan      html  css  js  c++  java
  • 2 替环空格

    题目描述

    请实现一个函数,将一个字符串中的空格替换成“%20”。例如,当字符串为We Are Happy.则经过替换之后的字符串为We%20Are%20Happy。
     
    思路:
     从前往后替换,后面的字符要不断往后移动,要多次移动,所以效率低下,时间复杂度 O(N2)。
     从后往前,先计算需要多少空间,然后从后往前移动,则每个字符只为移动一次,这样效率更高一点。时间复杂度O(N)。
     
     
     1 public class Solution {
     2     public String replaceSpace(StringBuffer str) {
     3         int spacenum = 0;
     4         for(int i = 0;i<str.length();i++){
     5             if(str.charAt(i)==' ')
     6                 spacenum++;
     7         }
     8         
     9            int newlength = str.length() + spacenum *2;
    10         int p1 = str.length()-1;
    11         int p2 = newlength -1;
    12         str.setLength(newlength);
    13         for(;p1>=0 && p2>p1;p1--){
    14             if(str.charAt(p1)==' '){
    15                 str.setCharAt(p2--,'0');
    16                 str.setCharAt(p2--,'2');
    17                 str.setCharAt(p2--,'%');
    18             }else
    19                 str.setCharAt(p2--,str.charAt(p1));
    20         }
    21         return str.toString();
    22     }
    23 }
    public class Solution {
        public String replaceSpace(StringBuffer str) {
            int spacenum=0;
            for(int i =0;i<str.length();i++)
                if(str.charAt(i)==' ')
                    spacenum++;
            
            int newlength = str.length()+spacenum*2;
            int p1 = str.length() -1;
            int p2 = newlength-1;
            str.setLength(newlength);
            while(true){
                if(p1<0 || p2<p1) break;
                else if(str.charAt(p1)==' '){
                    str.setCharAt(p2--,'0');
                    str.setCharAt(p2--,'2');
                    str.setCharAt(p2--,'%');
                    p1--;
                }
                else
                    str.setCharAt(p2--,str.charAt(p1--));
            }
                
            return str.toString();
        }
    }

    更新20180303

     1 # -*- coding:utf-8 -*-
     2 class Solution:
     3     # s 源字符串
     4     def replaceSpace(self, s):
     5         # write code here
     6         s = list(s)
     7         cnt = 0
     8         for i in s:
     9             if i==' ':
    10                 cnt+=1
    11         i = len(s)-1
    12         s = s + [' ']*cnt*2
    13         j = len(s)-1
    14         while i>=0 and j>=0:
    15             if(s[i]!=' '):
    16                 s[j] = s[i]
    17                 i-=1;j-=1
    18             else:
    19                 s[j] = '0'
    20                 s[j-1] = '2'
    21                 s[j-2] = '%'
    22                 j-=3
    23                 i-=1
    24         return ''.join(s)
    25                 
    26             
    27         

    trcik 

    1 # -*- coding:utf-8 -*-
    2 class Solution:
    3     # s 源字符串
    4     def replaceSpace(self, s):
    5         # write code here
    6         return s.replace(' ','%20')
    7                 
    8             
    9         
  • 相关阅读:
    Android属性动画
    android 保存配置文档
    android 不自动弹出虚拟键盘
    android 常用代码
    android imageswitcher gallery 根据数据库内图片名字进行查看/删除
    android 文件内容和 textview 操作
    用 java 语言获取 1N 的不重复随机数
    android 数据库 备份还原
    解决Ubuntu 输入法不显示
    android 添加文本内容到sqlite表中
  • 原文地址:https://www.cnblogs.com/zle1992/p/7749306.html
Copyright © 2011-2022 走看看