질문 1: 키보드를 통해 소문자 문자열(a~z)을 입력하세요.
문자열 필터링 프로그램을 작성해주세요. 문자열에 동일한 문자가 여러 개 나타나면 처음에 나타나지 않는 문자가 필터링됩니다.
예를 들어 문자열 "abacacde"의 필터 결과는 "abcde"입니다.
기능을 구현하는 데 필요합니다.
다음과 같이 코드 코드를 복사합니다.
void stringFilter(const char *pInputStr, long lInputLen, char *pOutputStr);
[입력] pInputStr : 입력 문자열
lInputLen: 입력 문자열 길이
[출력] pOutputStr: 출력 문자열, 공백이 열렸으며 입력 문자열과 길이가 같습니다.
[참고] 함수 알고리즘만 완성하면 되며 중간에 IO 입출력이 필요하지 않습니다.
예
입력: "deefd" 출력: "def"
입력: "afafafaf" 출력: "af"
입력: "pppppppp" 출력: "p"
기본 기능은 숨겨져 있습니다. 이것은 사용자를 위해 예약된 테스트 입구입니다. 여기에서 구현 기능을 테스트하고 printf를 호출하여 출력을 인쇄할 수 있습니다.
현재 다른 방법을 사용하여 테스트할 수 있습니다. 최종 프로그램이 올바르게 실행될 수 있는지 확인하는 한 함수 구현은 마음대로 수정할 수 있습니다.
하지만 함수 프로토타입을 변경하지 마세요. 컴파일 및 작업이 영향을 받지 않는지 확인하십시오.
질문 2: 질문 설명:
키보드를 통해 소문자 문자열(a~z)을 입력하세요. 문자열에서 연속적으로 반복되는 문자를 압축하여 압축된 문자열을 출력하는 문자열 압축 프로그램을 작성해주세요.
압축 규칙:
1. 연속적으로 반복되는 문자만 압축합니다. 예를 들어 문자열 "abcbc"에는 연속된 반복 문자가 없으므로 압축된 문자열은 여전히 "abcbc"입니다.
2. 압축된 필드의 형식은 "문자 반복 횟수 + 문자"입니다. 예를 들어 문자열 "xxxyyyyyyz"는 압축 후 "3x6yz"가 됩니다.
기능을 구현하는 데 필요합니다.
다음과 같이 코드 코드를 복사합니다.
void stringZip(const char *pInputStr, long lInputLen, char *pOutputStr);
[입력] pInputStr : 입력 문자열
lInputLen: 입력 문자열 길이
[출력] pOutputStr: 출력 문자열, 공백이 열렸으며 입력 문자열과 길이가 같습니다.
[참고] 함수 알고리즘만 완성하면 되며 중간에 IO 입출력이 필요하지 않습니다.
예
입력: "cccddecc" 출력: "3c2de2c"
입력: "adef" 출력: "adef"
입력: "pppppppp" 출력: "8p"
다음과 같이 코드 코드를 복사합니다.
공개 클래스 테스트 {
static void stringFilter( char InputStr[], long len, char OutputStr[]){
int[] a= 새로운 int[26];
정수 번호=0;
int j=0;//OutputStr[] 개수
for(int i=0;i<len;i++){
num = InputStr[i]-'a';
if(a[num]==0){//표시되지 않음
OutputStr[j]=InputStr[i];
j++;
a[숫자]=1;
}
}
}
static void stringZip( char InputStr[], long len, char OutputStr[]){
문자 온도='';
정수 번호=1;
정수점=0;
for(int i=0;i<len;i++){
if(입력Str[i]==온도){
숫자++;
}또 다른{
if(숫자!=1){
OutputStr[point++]=(char)(num+'0');
숫자=1;
}
OutputStr[포인트++]=온도;
온도=InputStr[i];
}
}
}
공개 정적 무효 메인(String[] args) {
// TODO 자동 생성된 메서드 스텁
char [] 테스트={'a','a','a','c','b','b','b','a','a','c','a', 'd','d','d','c','d','e'};
긴 len=test.length;
char [] res = new char[(int) len];
stringFilter(테스트,len,res);
int j=res.length;
for(int i=0;i<j;i++){
if(res[i]!='/0'){
System.out.print(res[i]);
}또 다른
부서지다;
}
char[] res2=new char[(int) (2*len)];
stringZip(테스트,len,res2);
for(int i=0;i<2*len;i++){
if(res2[i]!='/0'){
System.out.print(res2[i]);
}또 다른
부서지다;
}
}
}