标签:
题目:
设计一种方法,将一个字符串中的所有空格替换成 %20
。你可以假设该字符串有足够的空间来加入新的字符,且你得到的是“真实的”字符长度。
对于字符串"Mr John Smith"
, 长度为 13
替换空格之后的结果为"Mr%20John%20Smith"
如果使用 Java 或 Python, 程序中请用字符数组表示字符串。
解题:
表示做到的通过率最低的一道题。。。。
用java的字符串链接起来,然后toCharArray,然后出去接个和之前的一样,原来%20 表示的是一个空格。。。。。。。参考程序,直接在原char字符数组上操作,先求新的字符串数组的长度,再从后插入%20,这样就解决了,对于从后插入求解的碰到过,题目都会给这样的提示:假设该字符串有足够的空间来加入新的字符,要根据题目找答案,找思路。
Java程序:
public class Solution { /** * @param string: An array of Char * @param length: The true length of the string * @return: The true length of new string */ public int replaceBlank(char[] string, int length) { // Write your code here int reallen = length; for(int i = 0;i<length;i++){ if(string[i] == ‘ ‘) reallen += 2; } int index = reallen; for(int i = length - 1;i>= 0 ;i-- ){ if(string[i] == ‘ ‘){ string[--index] = ‘0‘; string[--index] = ‘2‘; string[--index] = ‘%‘; }else{ string[--index] = string[i]; } } return reallen; } }
总耗时: 1137 ms
Python程序:
class Solution: # @param {char[]} string: An array of Char # @param {int} length: The true length of the string # @return {int} The true length of new string def replaceBlank(self, string, length): # Write your code here if string==None: return None reallen = length for si in string: if si==‘ ‘: reallen += 2 index = reallen for i in range(length-1,-1,-1): if string[i] == ‘ ‘: index -= 1 string[ index ] = ‘0‘ index -= 1 string[ index ] = ‘2‘ index -= 1 string[ index ] = ‘%‘ else: index -= 1 string[ index ] = string[i] return reallen
总耗时: 393 ms
lintcode 容易题:Space Replacement 空格替换
标签:
原文地址:http://www.cnblogs.com/theskulls/p/4889209.html