C#에서 Substring(부분 문자열)은 문자열의 일부를 추출할 때 사용하는 핵심 기능입니다. 이를 위해 C#은 substring() 메서드를 제공합니다. 문자열에 중복 없이 고유한 문자만 포함되어 있는지 확인하려면, substring() 메서드를 활용해 각 위치의 문자를 하나씩 추출하고, 문자열 길이만큼 반복문을 수행하며 비교하면 됩니다.
검사 과정에서 어떤 문자라도 다른 위치의 문자와 일치한다면, 해당 문자열에는 중복된 문자가 존재한다는 의미입니다.
아래 예제 코드를 실행하면 문자열이 모두 고유한 문자로 이루어져 있는지 확인할 수 있습니다. 이 예제는 Substring() 메서드의 실제 사용법을 보여줍니다.
예제 코드
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
public class Demo {
public bool CheckUnique(string str) {
string one = "";
string two = "";
for (int i = 0; i < str.Length; i++) {
one = str.Substring(i, 1);
for (int j = 0; j < str.Length; j++) {
two = str.Substring(j, 1);
if ((one == two) && (i != j))
return false;
}
}
return true;
}
static void Main(string[] args) {
Demo d = new Demo();
bool b = d.CheckUnique("amit");
Console.WriteLine(b);
Console.ReadKey();
}
}코드 설명
위 코드의 동작 원리를 단계별로 살펴보겠습니다.
- CheckUnique 메서드: 전달받은 문자열을 처음부터 끝까지 순회하면서 각 인덱스의 문자를
Substring(i, 1)로 한 글자씩 추출합니다. - 중첩 반복문 비교: 바깥 반복문에서 추출한 문자와 안쪽 반복문에서 추출한 문자를 비교하여, 서로 다른 위치(
i != j)에서 같은 문자가 발견되면 즉시false를 반환합니다. - 결과 출력: 모든 문자가 고유하다면
true, 중복이 존재하면false가 출력됩니다. 예제의 "amit" 문자열은 중복이 없으므로True가 출력됩니다.
참고로 이 방식은 시간 복잡도가 O(n²)이므로, 더 나은 성능이 필요하다면 HashSet<char>을 사용해 O(n) 시간에 중복 여부를 확인하는 방법도 고려해 볼 수 있습니다.