. , , :
public static String compressRecursion(String str, char curChar, int curCount) {
if(str.length() == 0)
return "" + (curCount == 1 ? "" : curCount) + curChar;
String nextStr = str.substring(1,str.length());
if(str.charAt(0) == curChar)
return compressRecursion(nextStr,curChar,curCount + 1);
else
return "" + (curCount == 1 ? "" : curCount) + curChar
+ compressRecursion(nextStr,str.charAt(0),1);
}
public static String compress(String source) {
return compressRecursion(source, source.charAt(0), 0);
}
, , "Stack Overflow" , , , , . Java .
, ( ):
(define (num2str num)
(if (= 1 num) "" (number->string num)))
(define (first-char str)
(substring str 0 1))
(define (next-string str)
(substring str 1 (string-length str)))
(define (compress str char count)
(cond [(= 0 (string-length str)) (string-append (num2str count) char)]
[(string=? char (first-char str))
(compress (next-string str) char (+ count 1))]
[ else
(string-append (num2str count) char
(compress (next-string str) (first-char str) 1))]))
(define (compressStart str)
(compress str (first-char str) 0))
, , , , Java.