文字列圧縮
質問する
もんだいぶんせき
文字列を1組の文字列に圧縮することで、圧縮に最適な文字列数を求めて長さを求める問題.
に答える
実際に文字列を修正して圧縮したが、これは문자열
ではなく문자열의 길이
をコミットする問題である.形式にこだわっているので、なかなか解けません.
開始位置と数量
文字列セットを開始位置と個数で区切ります.j
は1つの列の開始位置であり、i
は1つの列のカウントであり、文字列のカウント圧縮率を求める. //i=길이, j=시작위치
for(int i=1;i<s.length()/2+1;i++){
String prev = s.substring(0,i); //시작 문자 묶음
int count = 1; //연속되는 갯수
String temp = ""; //버퍼
String last = ""; //마지막은 따로(묶음 갯수와 남은 문자갯수는 다를수 있음)
temp
は現在圧縮された文字列であり、last
は最後の残りの部分を処理するための文字列である.
文字列グループの比較
for(int j=i; j<s.length(); j+= i){
if(j+i>s.length()){
last = s.substring(j);//남은 문자열이 i보다 작은경우
continue;
}
if(prev.equals(s.substring(j,j+i))) //연속
count++; //갯수 증가
else{
temp += prev; //길이만 맞추자! 꼭 압축 형식 맞출 필요 없는 문제!
if(count > 1){ //연속
temp = count + temp; //숫자 추가
}
prev = s.substring(j,j+i);
count = 1;
}
}
残りの文字列をj+i > s.length()
で比較し、prev.equals(s.substring(j,j+i))
で文字列が連続しているかどうかを計算します.count
は連続性を比較するために使用され、prev
は前の文字列の連続性を比較するために使用される.
残りの文字列の処理と圧縮の比較
temp += prev + last; //마지막 나머지
if(count > 1)
temp = count + temp;
//최소 길이 비교
if(answer > temp.length())
answer = temp.length();
最後の残りの部分を追加し、最小長であるかどうかを比較します.
コード#コード# class Solution {
public int solution(String s) {
int answer = s.length(); //1단위 일때 최소
//i=길이, j=시작위치
for(int i=1;i<s.length()/2+1;i++){
String prev = s.substring(0,i); //시작 문자 묶음
int count = 1; //연속되는 갯수
String temp = ""; //버퍼
String last = ""; //마지막은 따로(묶음 갯수와 남은 문자갯수는 다를수 있음)
for(int j=i; j<s.length(); j+= i){
if(j+i>s.length()){
last = s.substring(j);//남은 문자열이 i보다 작은경우
continue;
}
if(prev.equals(s.substring(j,j+i))) //연속
count++; //갯수 증가
else{
temp += prev; //길이만 맞추자! 꼭 압축 형식 맞출 필요 없는 문제!
if(count > 1){ //연속
temp = count + temp; //숫자 추가
}
prev = s.substring(j,j+i);
count = 1;
}
}
temp += prev + last; //마지막 나머지
if(count > 1)
temp = count + temp;
//최소 길이 비교
if(answer > temp.length())
answer = temp.length();
}
return answer;
}
}
GitHub
https://github.com/ds02168/Study_Algorithm/blob/master/%ED%94%84%EB%A1%9C%EA%B7%B8%EB%9E%98%EB%A8%B8%EC%8A%A4/%EC%9E%90%EB%B0%94/Level2/%EC%98%A4%ED%94%88%EC%B1%84%ED%8C%85%EB%B0%A9.java
Reference
この問題について(文字列圧縮), 我々は、より多くの情報をここで見つけました
https://velog.io/@ds02168/문자열-압축
テキストは自由に共有またはコピーできます。ただし、このドキュメントのURLは参考URLとして残しておいてください。
Collection and Share based on the CC Protocol
実際に文字列を修正して圧縮したが、これは
문자열
ではなく문자열의 길이
をコミットする問題である.形式にこだわっているので、なかなか解けません.開始位置と数量
文字列セットを開始位置と個数で区切ります.
j
は1つの列の開始位置であり、i
は1つの列のカウントであり、文字列のカウント圧縮率を求める. //i=길이, j=시작위치
for(int i=1;i<s.length()/2+1;i++){
String prev = s.substring(0,i); //시작 문자 묶음
int count = 1; //연속되는 갯수
String temp = ""; //버퍼
String last = ""; //마지막은 따로(묶음 갯수와 남은 문자갯수는 다를수 있음)
temp
は現在圧縮された文字列であり、last
は最後の残りの部分を処理するための文字列である.文字列グループの比較
for(int j=i; j<s.length(); j+= i){
if(j+i>s.length()){
last = s.substring(j);//남은 문자열이 i보다 작은경우
continue;
}
if(prev.equals(s.substring(j,j+i))) //연속
count++; //갯수 증가
else{
temp += prev; //길이만 맞추자! 꼭 압축 형식 맞출 필요 없는 문제!
if(count > 1){ //연속
temp = count + temp; //숫자 추가
}
prev = s.substring(j,j+i);
count = 1;
}
}
残りの文字列をj+i > s.length()
で比較し、prev.equals(s.substring(j,j+i))
で文字列が連続しているかどうかを計算します.count
は連続性を比較するために使用され、prev
は前の文字列の連続性を比較するために使用される.残りの文字列の処理と圧縮の比較
temp += prev + last; //마지막 나머지
if(count > 1)
temp = count + temp;
//최소 길이 비교
if(answer > temp.length())
answer = temp.length();
最後の残りの部分を追加し、最小長であるかどうかを比較します.コード#コード# class Solution {
public int solution(String s) {
int answer = s.length(); //1단위 일때 최소
//i=길이, j=시작위치
for(int i=1;i<s.length()/2+1;i++){
String prev = s.substring(0,i); //시작 문자 묶음
int count = 1; //연속되는 갯수
String temp = ""; //버퍼
String last = ""; //마지막은 따로(묶음 갯수와 남은 문자갯수는 다를수 있음)
for(int j=i; j<s.length(); j+= i){
if(j+i>s.length()){
last = s.substring(j);//남은 문자열이 i보다 작은경우
continue;
}
if(prev.equals(s.substring(j,j+i))) //연속
count++; //갯수 증가
else{
temp += prev; //길이만 맞추자! 꼭 압축 형식 맞출 필요 없는 문제!
if(count > 1){ //연속
temp = count + temp; //숫자 추가
}
prev = s.substring(j,j+i);
count = 1;
}
}
temp += prev + last; //마지막 나머지
if(count > 1)
temp = count + temp;
//최소 길이 비교
if(answer > temp.length())
answer = temp.length();
}
return answer;
}
}
GitHub
https://github.com/ds02168/Study_Algorithm/blob/master/%ED%94%84%EB%A1%9C%EA%B7%B8%EB%9E%98%EB%A8%B8%EC%8A%A4/%EC%9E%90%EB%B0%94/Level2/%EC%98%A4%ED%94%88%EC%B1%84%ED%8C%85%EB%B0%A9.java
Reference
この問題について(文字列圧縮), 我々は、より多くの情報をここで見つけました
https://velog.io/@ds02168/문자열-압축
テキストは自由に共有またはコピーできます。ただし、このドキュメントのURLは参考URLとして残しておいてください。
Collection and Share based on the CC Protocol
class Solution {
public int solution(String s) {
int answer = s.length(); //1단위 일때 최소
//i=길이, j=시작위치
for(int i=1;i<s.length()/2+1;i++){
String prev = s.substring(0,i); //시작 문자 묶음
int count = 1; //연속되는 갯수
String temp = ""; //버퍼
String last = ""; //마지막은 따로(묶음 갯수와 남은 문자갯수는 다를수 있음)
for(int j=i; j<s.length(); j+= i){
if(j+i>s.length()){
last = s.substring(j);//남은 문자열이 i보다 작은경우
continue;
}
if(prev.equals(s.substring(j,j+i))) //연속
count++; //갯수 증가
else{
temp += prev; //길이만 맞추자! 꼭 압축 형식 맞출 필요 없는 문제!
if(count > 1){ //연속
temp = count + temp; //숫자 추가
}
prev = s.substring(j,j+i);
count = 1;
}
}
temp += prev + last; //마지막 나머지
if(count > 1)
temp = count + temp;
//최소 길이 비교
if(answer > temp.length())
answer = temp.length();
}
return answer;
}
https://github.com/ds02168/Study_Algorithm/blob/master/%ED%94%84%EB%A1%9C%EA%B7%B8%EB%9E%98%EB%A8%B8%EC%8A%A4/%EC%9E%90%EB%B0%94/Level2/%EC%98%A4%ED%94%88%EC%B1%84%ED%8C%85%EB%B0%A9.java
Reference
この問題について(文字列圧縮), 我々は、より多くの情報をここで見つけました https://velog.io/@ds02168/문자열-압축テキストは自由に共有またはコピーできます。ただし、このドキュメントのURLは参考URLとして残しておいてください。
Collection and Share based on the CC Protocol