簡體   English   中英

解碼字符串的方法有幾種?

[英]number of ways to decode a string?

我正在解決需要解碼字符串的問題..

使用以下映射將包含來自 AZ 的字母的消息編碼為數字:

'A' -> 1

'B' -> 2

...

'Z' -> 26

給定一個只包含數字的非空字符串,確定解碼它的方法總數。

示例 1:

輸入:“12”

輸出:2

說明:可以解碼為“AB”(1 2)或“L”(12)。

示例 2:

輸入:“226”

輸出:3

解釋:可以解碼為“BZ”(2 26)、“VF”(22 6)或“BBF”(2 2 6)。

我想出了下面的遞歸方法,但它為這個輸入“227”提供了錯誤的輸出。 輸出應為“2”,但我的程序給出“3”:

  public static int decodeWays(String data) {
    return helper(data, data.length());
  }

  private static int helper(String data, int k) {
    if (k == 0)
      return 1;
    int s = data.length() - k;
    if (data.charAt(s) == '0')
      return 0;

    int result = helper(data, k - 1);
    if (k >= 2 && Integer.parseInt(data.substring(0, 2)) <= 26) {
      result += helper(data, k - 2);
    }
    return result;
  }

我的上述方法有什么問題?

在這一行——

if (k >= 2 && Integer.parseInt(data.substring(0, 2)) <= 26) {

您始終檢查相同的 2 位數字data.substring(0, 2) 而是考慮類似的東西

data.substring(data.length()-k, data.length()).substring(0, 2)

或者

data.substring(data.length()-k, data.length()-k+2)

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM