주어진 문자열을 미리 정의 된 문자열과 비교하고 삽입 오류, 삭제 오류, 변환 또는 대체 오류가 발생했는지 확인해야하는 프로그램이 있습니다. 단어 개가 사용자에게 표시하고 사용자가 개 또는 도제 제출되었는지C에서 두 문자열 비교 #
는 예를 들어,이 삽입 에러가 이루어진 것으로, 유저에게 통지한다.
어떻게해야합니까?
주어진 문자열을 미리 정의 된 문자열과 비교하고 삽입 오류, 삭제 오류, 변환 또는 대체 오류가 발생했는지 확인해야하는 프로그램이 있습니다. 단어 개가 사용자에게 표시하고 사용자가 개 또는 도제 제출되었는지C에서 두 문자열 비교 #
는 예를 들어,이 삽입 에러가 이루어진 것으로, 유저에게 통지한다.
어떻게해야합니까?
function
을 작성 하시려면 parameter
이 input sting
으로 표시됩니다. function
은 다소 비슷하게 보입니다. 언제 어디서나 function
을 사용하십시오.
private void CheckString(string userString)
{
string predefinedString = "dog";
if (userString == predefinedString)
{
// write your logic here
}
else
{
MessageBox.Show("Incorrect word"); // notify the users about incorrect word over here
}
}
문자열이 동일한 지 여부 만 알려줍니다. OP는 "doge"와 같은 삽입 오류와 두 개의 연속 문자를 교체하는 "dgo"와 같은 다른 종류의 오류를 구별하려고합니다. 나는 OP가 이미 "=="연산자에 대해 알고 있다고 확신합니다. –
사실 그것은 OP 질문에 대한 답변입니다. 문제는 OP 질문이 우리에게 충분한 정보를 제공하지 않는다는 것입니다. @KeithThompson 당신은 실제로 OP가 원하는 것을 가정합니다. –
@AnthonyNichols - OP는 알고리즘이 전치, 치환, 삽입 또는 삭제를 탐지하기를 원합니다.나는 충분한 정보가 질문에 주어지지 않는다는 것에 동의하지만 OP는 두 문자열이 일치하는지 확인하는 것 이상을 원한다는 것에 동의한다. (삽입/삭제 등의 측면은 언급 할 필요가 없다.) – keyboardP
당신은 아마 같은 오류가 있는지 확인하기 위해 각 오류 유형의 각각의 방법을 쓸 필요가 :
bool IsInsertionError(string expected, string actual) {
// Maybe look at all of the chars in expected, to see if all of them
// are there in actual, in the correct order, but there's an additional one
}
bool IsDeletionError(string expected, string actual) {
// Do the reverse of IsInsertionError - see if all the letters
// of actual are in expected, in the correct order,
// but there's an additional one
}
bool IsTransposition(string expected, string actual) {
// This one might be a little tricker - maybe loop through all the chars,
// and if expected[i] != actual[i], check to see if
// expected[i+1] = actual[i] and actual[i-1]=expected[i]
// or something like that
}
모든 개별 규칙을 빌드하면, 당신 먼저 확인 보통 평등을 위해 한 번에 하나씩 꺼내십시오.
이러한 문제를 작은 구성 요소로 분해해야합니다. 그런 다음 쉽게 문제가 발생하면 한 번에 하나씩 해결하십시오.
내 머리 위로 떨어져그러나 나는 이것이 당신이 시작하는해야한다고 생각 :
Insertion
및 Deletion
을 아주 간단해야한다; 그냥 문자열의 길이를 확인하십시오.
if(originalString.Length > newString.Length)
{
//deletion
}
else if(originalString.Length < newString.Length)
{
//insertion
}
것은, transposition
을 감지 길이 일치 만약 그렇다면, 당신은 두 개의 문자열에서 두 List<char>
를 만들 수 있는지 확인합니다. 그들이 substitution
을 감지하기
bool isTransposed = originalList.OrderBy(x => x).SequenceEquals(newList.OrderBy(y => y));
아래의 표현식을 사용하여 일치하는 경우에 당신은 Hamming Distance를 사용하고 0
삽입보다 큰 있는지 확인할 수 있습니다 확인 어디 - 데이터베이스에? –
감사합니다. 하지만 데이터베이스를 사용하지 않습니다. –
그리고 사전 정의 된 문자열은 계속 변경됩니까? 아니면 일정합니까? –