java 압축 문자열과 java 문자열 필터 구현

3346 단어
제목 1: 키보드를 통해 소문자 (a~z) 로 구성된 문자열을 입력합니다.문자열에 같은 문자가 여러 개 나타나면 처음 나타나지 않는 문자를 필터하는 문자열 필터를 작성하십시오.예를 들어 문자열 "abaccde"필터 결과는 "abcde"입니다.
요구 사항 구현 함수:
 
  
void stringFilter(const char *pInputStr, long lInputLen, char *pOutputStr);

[입력] pInputStr: 입력 문자열 lInputLen: 입력 문자열 길이 [출력] pOutputStr: 출력 문자열, 공간이 개척되어 입력 문자열과 같이 깁니다.
[주의] 이 함수 기능 알고리즘만 완성하면 중간에 입출력이 필요 없습니다.
예시 입력: "deefd"출력: "def"입력: "afafafaf"출력: "af"입력: "ppppppp"출력: "p"
main 함수는 숨겨져 있습니다. 사용자의 테스트 입구를 보존합니다. 이 함수는 실행 함수를 테스트할 수 있습니다. printf 출력 출력을 호출할 수 있습니다. 현재 다른 방법으로 테스트할 수 있습니다. 최종 프로그램이 정확하게 실행될 수 있도록 보장하면 됩니다. 이 함수는 임의로 수정할 수 있지만 함수의 원형을 바꾸지 마십시오.번역 운행이 영향을 받지 않도록 반드시 보장해야 한다.
문제2: 제목 설명: 키보드를 통해 소문자(a~z)로 구성된 문자열을 입력한다.문자열 압축 프로그램을 작성하여 문자열에 연속적으로 출석한 중복 자모를 압축하고 압축된 문자열을 출력하십시오.압축 규칙: 1.연속적으로 반복되는 문자만 압축합니다.예를 들어 문자열 "abcbc"는 연속 중복 문자가 없기 때문에 압축된 문자열은 "abcbc"입니다.압축 필드의 형식은 '문자 중복 횟수 + 문자' 입니다.예를 들어 문자열 "xxxyyyyyz"를 압축하면 "3x6yz"가 됩니다.
요구 사항 구현 함수:
 
  
void stringZip(const char *pInputStr, long lInputLen, char *pOutputStr);

[입력] pInputStr: 입력 문자열 lInputLen: 입력 문자열 길이 [출력] pOutputStr: 출력 문자열, 공간이 개척되어 입력 문자열과 같이 깁니다.
[주의] 이 함수 기능 알고리즘만 완성하면 중간에 입출력이 필요 없습니다.
예시 입력: "cccddecc"출력: "3c2de2c"입력: "adef"출력: "adef"입력: "ppppppp"출력: "8p"
 
  
public class Test {

  

 static void stringFilter( char InputStr[], long len, char OutputStr[]){
  int[] a= new int[26];
  int num=0;
  int j=0;//OutputStr[]
  for(int i=0;i   num = InputStr[i]-'a';
   if(a[num]==0){//
    OutputStr[j]=InputStr[i];
    j++;
    a[num]=1;
   }
  }
 }

 static void stringZip( char InputStr[], long len, char OutputStr[]){
  char temp=' ';
  int num=1;
  int point=0;
  for(int i=0;i   if(InputStr[i]==temp){
    num++;
   }else{
    if(num!=1){
     OutputStr[point++]=(char)(num+'0');
     num=1;
    }    
    OutputStr[point++]=temp;
    temp=InputStr[i];
   }
  }  
 }

 public static void main(String[] args) {
  // TODO Auto-generated method stub
  char [] test={'a','a','a','c','b','b','b','a','a','c','a','d','d','d','c','d','e'};
  long len=test.length;
  char [] res = new char[(int) len];
  stringFilter(test,len,res);
  int j=res.length;
  for(int i=0;i   if(res[i]!='\0'){
    System.out.print(res[i]);
   }else
    break;   
  }

  char[] res2=new char[(int) (2*len)];
  stringZip(test,len,res2);
  for(int i=0;i<2*len;i++){
   if(res2[i]!='\0'){
    System.out.print(res2[i]);
   }else
    break;
  }
 }
}

좋은 웹페이지 즐겨찾기