【劍指offer】替換字串中的空格
轉載請註明出處:http://blog.csdn.net/ns_code/article/details/25002199
劍指offer上的第四道題目,在九度OJ上測試通過,但還是有些問題,因為是用C語言實現的,因此,要提前開闢一個比較大的空間來儲存輸入的字串。而如果線上測試系統的測試用例中字串的長度大於該最大值的話,會報RE,但是九度OJ的測試用例沒有大於我所設定的字串的最大值。當然,這道題目用C++中的string類或java中的String類實現會更好,不需要擔心輸入字串的長度。
- 題目描述:
請實現一個函式,將一個字串中的空格替換成“%20”。例如,當字串為We Are Happy.則經過替換之後的字串為We%20Are%20Happy。
- 輸入:
每個輸入檔案僅包含一組測試樣例。
對於每組測試案例,輸入一行代表要處理的字串。
- 輸出:
對應每個測試案例,出經過處理後的字串。
- 樣例輸入:
We Are Happy
- 樣例輸出:
We%20Are%20Happy
#include<stdio.h>
#include<string.h>
#include<stdlib.h>;
char *ReplaceBlank(char *str)
{
if(str == NULL)
return NULL;
int len = strlen(str);
if(len == 0)
return NULL;
int i,count = 0;
for(i=0;i<len;i++)
if(str[i] == ' ')
count++;
//沒有空格,就直接返回str
if(count == 0)
return str;
int new_len = 2*count+len+1;
char *dest = (char *)malloc(new_len*sizeof(char));
if(dest == NULL)
exit(EXIT_FAILURE);
int j = 0;
for(i=0;i<len;i++)
{
if(str[i] != ' ')
{
dest[j++] = str[i];
}
else
{
dest[j] = '%';
dest[j+1] = '2';
dest[j+2] = '0';
j += 3;
}
}
dest[j] = '\0';
return dest;
}
int main()
{
//雖然AC了(主要九度的測試用例沒有大於這個範圍的),但是人為地限制str的長度並不是最佳的方法,
//最好使用C++中的string類或java中的String類,
//但目前在C語言中,我還不知道怎麼可以不限定長度地從鍵盤接受輸入的字串。
static char str[10000000];
gets(str);
char *dest = ReplaceBlank(str);
if(dest != NULL)
puts(dest);
free(dest);
dest = NULL;
return 0;
}
/**************************************************************
Problem: 1510
User: mmc_maodun
Language: C
Result: Accepted
Time:10 ms
Memory:10976 kb
****************************************************************/
相關文章
- 劍指offer-字串空格替換為“ ”字串
- 【劍指offer】【2】字串的空格字串
- LeetCode 劍指 Offer 05. 替換空格LeetCode
- 替換空格 將一個字串中的空格替換成“ ”字串
- 【劍指offer】字串的排列字串
- js替換字串裡的空格JS字串
- 【劍指offer】字串的組合字串
- 替換字串中的空格《演算法很美》字串演算法
- Problem 4:替換空格(字串)字串
- 【劍指offer】左旋轉字串字串
- 劍指 Offer 38. 字串的排列字串
- 劍指Offer 表示數值的字串字串
- 【劍指offer】字串轉整數字串
- 劍指offer(Java版)--將字串轉換為整數Java字串
- 劍指offer——把字串轉換成整數C++字串C++
- 《劍指offer》:[54]表示數值的字串字串
- C++ 中的替換空格C++
- 劍指Offer系列之「表示數值的字串」字串
- 第五章 字串專題 ---------------- 5.4 實踐:替換字串中的空格字串
- 力扣 - 劍指 Offer 67. 把字串轉換成整數力扣字串
- 《劍指offer》:[42-1]左旋轉字串字串
- javascript將字串中的多個空格替換為一個空格的正則例項JavaScript字串
- 《劍指offer》:[49]把字串轉化成整數字串
- 【劍指offer】陣列中的逆序對陣列
- 《Leetcode of December》劍指 Offer 67. 把字串轉換成整數LeetCode字串
- [劍指offer][第四章][28]字串的排列字串
- Vi中的替換字串字串
- 《劍指offer》:[66]矩陣中的路徑矩陣
- 《劍指offer》:[64]資料流中的中位數
- 劍指 Offer 48. 最長不含重複字元的子字串字元字串
- 【劍指offer】刪除在另一個字串中出現的字元字串字元
- 【劍指offer】二維陣列中的查詢陣列
- 劍指offer-JavaScript版JavaScript
- 劍指Offer題解合集
- 劍指Offer-37-陣列中逆序對陣列
- 【劍指offer】樹的子結構
- 【劍指offer】二進位制中1的個數
- 劍指offer中幾道演算法題的思考演算法