c言語unique実装

720 ワード

スペースを削除するような考え方ですが、スペースは指定文字です.ここでは、前の文字と同じ文字を削除します.
#include <iostream>
#include <cstring>

char * del_uniqe(char * const string)
{
	int i = 0;
	int j = 1;
	int k = 0;
	// delete spaces among characters
	while (string[j] != '\0')
	{

			k = i==0?i:i - 1;
		if (string[j] != string[k])
		{
			string[i++] = string[j++];
		}
		else
		{
			while (string[j] == string[k])
			{
				j++;
			}
			string[i++] = i == 0 ? string[j - 1] : string[j];
		}

	}
	string[i] = '\0';
	return string;
}

int _tmain(int argc, char ** argv)
{
	char string[] = "11233334556677889990";
	char * result = del_uniqe(string);
	std::cout << result << std::endl;
}