華為機試 刪除字串中所有給定的子串

來源:互聯網
上載者:User

問題描述: 

在給定字串中尋找所有特定子串並刪除,如果沒有找到相應子串,則不作任何操作。
要求實現函數: 
int delete_sub_str(const char *str, const char *sub_str, char *result_str)
【輸入】 str:輸入的被操作字串
         sub_str:需要尋找並刪除的特定子字串
【輸出】 result_str:在str字串中刪除所有sub_str子字串後的結果
【返回】 刪除的子字串的個數
註:
I、   子串匹配只考慮最左匹配情況,即只需要從左至右進行字串匹配的情況。比如:
在字串"abababab"中,採用最左匹配子串"aba",可以匹配2個"aba"字串。如果
匹配出從左至右位置2開始的"aba",則不是最左匹配,且只能匹配出1個"aba"字串。
II、  輸入字串不會超過100 Bytes,請不用考慮超長字串的情況。

樣本 
輸入:str = "abcde123abcd123"
sub_str = "123"
輸出:result_str = "abcdeabcd"
返回:2

輸入:str = "abcde123abcd123"
sub_str = "1234"
輸出:result_str = "abcde123abcd123"
返回:0

思路:遍曆原字串,當出現和子串首位相等的字元時停止,接下來用strncmp()函數判斷接下來的若干位是否相等,並根據結果做相應處理。

代碼如下:由於測試資料較少,出現錯誤在所難免,希望發現的朋友指正,不甚感激!

#include <stdio.h>#include <string.h>int delete_sub_str(const char *str, const char *sub_str, char *result_str);int main(){char *str = "abcde123abcd123";char *sub_str = "1234";char result[100];printf("%d\n%s\n", delete_sub_str(str, sub_str, result), result);return 0;}int delete_sub_str(const char *str, const char *sub_str, char *result_str){int count = 0;int str_len = strlen(str);int sub_str_len = strlen(sub_str);if (str == NULL){result_str = NULL;return 0;}if (str_len < sub_str_len || sub_str == NULL){while (*str != '\0'){*result_str = *str;str++;result_str++;}return 0;}while (*str != '\0'){while (*str != *sub_str && *str != '\0'){*result_str = *str;str++;result_str++;}if (strncmp(str, sub_str, sub_str_len) != 0){*result_str = *str;str++;result_str++;continue;}else{count++;str += sub_str_len;}}*result_str = '\0';return count;}

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.