第一篇:華為公司應(yīng)聘程序員上機(jī)考試題
1.刪除字符串中所有給定的子串(40分)
問題描述:
在給定字符串中查找所有特定子串并刪除,如果沒有找到相應(yīng)子串,則不作任何操作。要求實(shí)現(xiàn)函數(shù):int delete_sub_str(const char *str, const char *sub_str, char *result_str)
【輸入】 str:輸入的被操作字符串
sub_str:需要查找并刪除的特定子字符串
【輸出】 result_str:在str字符串中刪除所有sub_str子字符串后的結(jié)果
【返回】 刪除的子字符串的個(gè)數(shù)
注:
I、子串匹配只考慮最左匹配情況,即只需要從左到右進(jìn)行字串匹配的情況。比如: 在字符串“abababab”中,采用最左匹配子串“aba”,可以匹配2個(gè)“aba”字串。如果
匹配出從左到右位置2開始的“aba”,則不是最左匹配,且只能匹配出1個(gè)“aba”字串。II、輸入字符串不會(huì)超過100 Bytes,請(qǐng)不用考慮超長(zhǎng)字符串的情況。示例輸入:str = “abcde123abcd123”
sub_str = “123”
輸出:result_str = “abcdeabcd”
返回:2
輸入:str = “abcde123abcd123”
sub_str = “1234”
輸出:result_str = “abcde123abcd123”
返回:0
下面是鄙人的解答:
#include
#include
#include
using namespace std;
//刪除指定的子字符串
char* str_del(char* str,int pos,int length)
{
for(int i=pos;i<(strlen(str)-length);i++)
{
str[i] = str[i+length];
}
for(int i=(strlen(str)-length);i { str[i] = '