लूप के लिए किसी भी के बिना मैं स्ट्रिंग को लगातार कैसे डंप्रेस करूं? - जावा, रिकर्सन, डिकंप्रेशन

मेरे असाइनमेंट के लिए, मुझे सक्षम होना चाहिएलूप के लिए बिना किसी स्ट्रिंग को दोबारा दबाएं। मुझे लूप के लिए उपयोग करने से खुद को सीमित करने की कोशिश करने में कुछ परेशानी हो रही है और अगर मैं कुछ सहायता प्राप्त कर सकता हूं तो मैं इसकी सराहना करता हूं। अंत में, मेरे पास लूप के लिए एक है और मैं सोच रहा था कि अगर कोई रास्ता है तो मैं इसे किसी और चीज़ से हटा सकता हूं और अभी भी मेरा प्रोग्राम ऐसा करने के लिए है जो मैं करना चाहता हूं

public class StringRec {
public static void main(String[] args) {
System.out.println("What text do you want to decompress?");
String compressedText = IO.readString();
System.out.println(decompress(compressedText));
}
public static String decompress(String compressedText) {
if (compressedText.length()<=1){
return compressedText;
}
String first="";
String rest="";
char c = compressedText.charAt(0);
if (Character.isLetter(c) == true) {
first = compressedText.substring(0,1);
rest = compressedText.substring(1);
return first + decompress(rest);
} else {
first = compressedText.substring(1,2);
rest = compressedText.substring(2);
int x = compressedText.charAt(0)-"0";
char y = compressedText.charAt(1);
String tst = "";

for(int i = 0; i < x; i++) {
tst = tst+y;
}

return tst + decompress(rest);
}
}
}

उत्तर:

उत्तर № 1 के लिए 1

एक ही काम करने के लिए थोड़ी देर लूप का प्रयोग करें।

int i = 0;
while(i < x) {
i++;
tst += y;
}

यदि आप पूरी तरह से लूप का उपयोग नहीं कर सकते हैं, तो रिकर्सन का उपयोग करें।

int i = 0;

public String recursiveAppend(String tst) {
if(i >= x) {
i = 0;
return tst;
}
else return recursiveAppend(tst + y);
}

यदि आप जावा 1.5 का उपयोग कर रहे हैं, तो इसका उपयोग करें String tst = new String(new char[x]).replace("", y);। (से यहाँ)


जवाब के लिए 0 № 2

बचाव के लिए रिकर्सन, बोनस प्वाइंट अगर यह पूंछ रिकर्सिव है:

 String tst = repeat(y, x, "");

...

private String repeat(y, x, b) {
if (x == 0) {
return b;
}
return repeat(y, x - 1, b + y) ;
}

संबंधित सवाल
सबसे लोकप्रिय