您的位置:首页 > 娱乐 > 八卦 > 东莞网络安全建设_成人大专学历怎么自考_郑州seo排名哪有_软文营销策划

东莞网络安全建设_成人大专学历怎么自考_郑州seo排名哪有_软文营销策划

2024/12/29 2:16:42 来源:https://blog.csdn.net/qq_43539664/article/details/143780807  浏览:    关键词:东莞网络安全建设_成人大专学历怎么自考_郑州seo排名哪有_软文营销策划
东莞网络安全建设_成人大专学历怎么自考_郑州seo排名哪有_软文营销策划

求字符 ‘a’ 和 ‘b’ 组成的,最大长度为n的字符串中字典序第 k 个字符串

先来解释一下这个题目,假设最大长度为3,那么由字符ab组成的字符串有:

a, b, ab, aaa, aba...

把这些字符串按照字典序排序:

  1. a
  2. aa
  3. aaa
  4. aab
  5. ab
  6. aba
  7. abb
  8. b
  9. ba
  10. baa
  11. bab
  12. bb
  13. bba
  14. bbb

由于只有两个字符,可以用前缀树来存储所有的字符串,对于n=2时的前缀树:
在这里插入图片描述

既然用到了树数据结构,这里可以用回溯法的思想来解决这道问题,先遍历左子节点,即先获取字符a,然后再遍历右子节点,即获取字符b
代码如下:

public class KLenString{public static boolean found;public static int k;public static String result;public static void backtrace(StringBuilder sb, int depth){if(found){return;}if(sb.length() > 0){k--;if(k == 0){result = sb.toString();found = true;return;}}if(sb.length() == depth){return;}sb.append('a');backtrace(sb, depth);sb.deletCharAt(sb.length()-1);sb.append('b');backtrace(sb, depth);sb.deletCharAt(sb.length()-1);}
}

版权声明:

本网仅为发布的内容提供存储空间,不对发表、转载的内容提供任何形式的保证。凡本网注明“来源:XXX网络”的作品,均转载自其它媒体,著作权归作者所有,商业转载请联系作者获得授权,非商业转载请注明出处。

我们尊重并感谢每一位作者,均已注明文章来源和作者。如因作品内容、版权或其它问题,请及时与我们联系,联系邮箱:809451989@qq.com,投稿邮箱:809451989@qq.com