我有一個在java中的評估,我很難解決。 這就是:
實作encode(plainText)方法,該方法回傳一個編碼的資訊。
它接收一個plainTest引數,這是一個字串,例如:
aaaabcccaaa
你必須通過計算每個字母的連續出現來進行編碼,例如在aaaabcccaaa中,有:
abca因此,你必須回傳字串4a1b3c3a
限制條件:
plainText是一個小寫的字串(在a和z之間) 。
plaintext絕不是null,并且最大尺寸為15,000字符 。
例子:
普通文本
aabaa加密文本
2a1b2a
class Solution {
public static String encode(String plainText){
//在這里寫下你的代碼。
return ""。
所以我做了下面的代碼,但我認為它是錯誤的:
我做了下面的代碼。
class Solution {
public static String encode(String plainText){
String str = null;
for(char i : plainText.toCharArray()){
if(plainText.charAt(i)=='a'/span>){
return getCharCount(plainText,"a"/span>) "a"。
}
}
return str。
}
public static long getCharCount(String str,String val){
long count= str.chars().mapToObj(e->String.valueOf((char)e).filter(e->e.equals(val))
.count()。
System.out.println("occurence of a :" count)。
return count。
}
public static void main(String[] args) {
String plainText="aaaaabccaaa"。
System.out.println(Solution_Encode.encode(lainText))。
getCharCount(plainText,"a")。
}
我只成功地顯示了字母a的出現,它是7,這不是任務要求的。
我不知道該如何處理,以便得到一個結果:
PlainText(input)
aabaaCypherText(output)
2a1b2a
你能幫我一下嗎?
uj5u.com熱心網友回復:
你可以像下面這樣進行編碼:
首先,將字串中的第一個字符設定為當前背景關系。對它的初始計數為1。然后一個接一個地遍歷字串中的每個字符。檢查它是否與先前的值相同(在初始階段,它將與第一個字符進行比較)。如果相同,則增加計數。如果不一樣,則將背景關系中的字符與計數一起轉為encodedString,并將背景關系改為下一個字符,并將計數設為1。如下面的代碼:public static String encode(String plainText) {
char currentChar = plainText.charAt(0)。
int count = 1;
StringBuilder encodedString = new StringBuilder() 。
for (int i = 1; i < plainText.length(); i ) {
char nextChar = plainText.charAt(i);
if (currentChar == nextChar) {
count ;
} else {
encodedString.append(count).append(currentChar)。
currentChar = nextChar;
count = 1;
}
}
encodedString.append(count).append(currentChar)。
return encodedString.toString()。
轉載請註明出處,本文鏈接:https://www.uj5u.com/net/331553.html
標籤:
下一篇:資料透視表不顯示所有df值
