문자열과 대소문자가 혼합된 경우(즉, 대문자와 소문자가 모두 포함된 경우) 작업은 대문자인 경우 첫 번째 문자를 소문자로 바꾸는 것입니다.
간단한 예를 통해 깊이 이해해 봅시다.
"hElLo world"라는 문자열이 주어진 것처럼 첫 번째 문자 'h'는 소문자인 'H'로 변환하고 공백이나 문자열 끝 앞의 모든 문자는 소문자로 바꿔야 합니다.
또한 공백 다음에 첫 번째 문자를 만나면 대문자로 변환해야 합니다.
예
Input: str[] = {“heLlO wORLD”}
Output: Hello World
Input: str[] = {"sUNIDHi bAnSAL"}
Output: Sunidhi Bansal 아래에 사용된 접근 방식은 다음과 같습니다. -
- 이 문제를 해결하기 위해 문자의 ASCII 값을 사용합니다.
- ASCII는 American Standards Code for Information Interchange의 약자로 모든 문자에 관련된 코드가 있음을 의미합니다. 대문자 A-Z와 마찬가지로 65-90의 숫자 값이 지정되고 소문자 a-z는 97-122 범위의 숫자가 지정됩니다. 따라서 이 값을 사용하여 문제를 해결할 것입니다.
- 전체 문자열을 탐색하고
- 첫 번째 문자 또는 공백 '' 뒤의 바로 옆 문자가 a-z 범위에 있는지 확인한 다음 'A'와 'a'의 ASCII 값을 뺀 다음 그 결과를 문자에 추가합니다.
- 첫 번째 문자가 아니거나 공백 바로 뒤의 문자가 아니면 문자가 대문자인지 확인한 다음 소문자로 변환해야 하며 'a' - 'A'를 뺀 결과에 문자 값을 더합니다.
알고리즘
Start
In Function int firstupper(char str[], int n)
Step 1-> Initialize int i
Step 2-> Loop For i = 0 And i<n And i++
If i == 0 && str[i] != ' ' || str[i] != ' ' && str[i-1] == ' ' then,
If str[i] >= 'a' && str[i]<='z' then,
str[i] = (char)(('A'-'a') + str[i] )
End If
Else If str[i] >= 'A' && str[i] <= 'Z' then,
str[i] = (char)(str[i] + ('a' - 'A'))
End If
End Function
In Function int main(int argc, char const *argv[])
Step 1-> Declare and initialize char str[] = {"sUNIDHi bAnSAL"}
Step 2-> Declare n set as sizeof(str)/sizeof(str[0])
Step 3-> firstupper(str, n)
Step 4-> Print "%s\n", str
End main 예
#include <stdio.h>
int firstupper(char str[], int n) {
int i;
for(i = 0; i<n; i++) {
if (i == 0 && str[i] != ' ' || str[i] != ' ' && str[i-1] == ' ') {
if(str[i] >= 'a' && str[i]<='z') {
str[i] = (char)(('A'-'a') + str[i] );
}
} else if (str[i] >= 'A' && str[i] <= 'Z') {
str[i] = (char)(str[i] + ('a' - 'A'));
}
}
return 0;
}
int main(int argc, char const *argv[]) {
char str[] = {"sUNIDHi bAnSAL"};
int n = sizeof(str)/sizeof(str[0]);
firstupper(str, n);
printf("%s\n", str);
return 0;
} 출력
Sunidhi Bansal