프로그래밍 언어/C++

[C] 문자열에서 특정 문자 변경, 제거 그리고 중복 제거

ShovelingLife 2023. 12. 13. 13:32
// 문자열에서 a 문자를 b 문자로 변경
// @param str 문자열 
// @param cmp 바꾸고자 하는 문자
// @param rep 대체 문자
void ReplaceCharacter(char* str, char cmp, char rep)
{
	if (str[0] == '\0')
		return;
	
	if (str[0] == cmp)
		str[0] = rep;

	ReplaceCharacter(str + 1, cmp, rep);
}

// 문자열에서 특정 문자를 제거
// @param str 문자열 
// @param cmp 삭제하고자 하는 문자
void RemoveCharacter(char* str, char cmp)
{
	if (str[0] == '\0')
		return;

	// 한 칸 씩 땡김
	if (str[0] == cmp)
	{
		for (int i = 0; str[i] != '\0'; i++)
			str[i] = str[i + 1];

		RemoveCharacter(str, cmp);
	}
	else
		RemoveCharacter(str + 1, cmp);
}

// 문자열에서 중복된 문자를 제거
// @param str 문자열
void RemoveDuplicates(char* str)
{
	// 다른 매개변수 불필요하니 임시로
	static char cmp = '\0';

	if (str[0] == '\0')
		return;

	// 한 칸 씩 땡김
	if (str[0] == cmp)
	{
		for (int i = 0; str[i] != '\0'; i++)
			str[i] = str[i + 1];

		RemoveDuplicates(str);
	}
	else
	{
		cmp = str[0];
		RemoveDuplicates(str + 1);
	}
}

int main()
{
	char str[] = "aaaabbfffffffe";
	cout << "변경 전 : " << str << endl;
	//ReplaceCharacter(str, 'b', 'f');
	//RemoveCharacter(str, 'a');
	//RemoveDuplicates(str);
	cout << "변경 후 : " << str << endl;
}