java - 在 Java 中计算字符串的 1 和 0,并将它们按顺序排列?
问题描述
我确实有一个大问题,编码应该很容易:
我需要创建一个静态公共方法,它返回一个字符串并以字符串的形式获取二进制数。
public static String encode(String a) {
此方法必须计算连续的零和一。如果数字发生变化,则必须为空白。此外,如果第一个数字不是零,程序只需写一个零作为第一个数字。
Example: 11100110111 => "0 3 2 2 1 3"
Other Examples are:
encode("0") --> "1"
encode("000") --> "3"
encode("11") --> "0 2"
encode("011") --> "1 2"
encode("101") --> "0 1 1 1"
我不知道如何做到这一点,如果有人可以提供帮助,那就太好了!我将在这里发布我毫无价值的代码,它无用但最终包含一些有用的信息!
public class Functionality {
public static void main(String[] args) {
System.out.println(encode("111"));
}
public static String encode(String a) {
int z = 0;
int v = 0;
String erg = "";
while (a.length() == 0) {
while (v == ErsterWert(a)) {
z = z + 1;
subt(a);
}
String zx = String.valueOf(z);
erg = erg + zx + " ";
if (v == 0) {
v = v + 1;
}
if (v == 1) {
v = 0;
}
z = 0;
}
String bg = "sds";
return erg;
}
public static int ErsterWert(String a) {
int f = a.charAt(0);
return f;
}
public static String subt(String a) {
a = a.substring(1);
return a;
}
}
解决方案
使用字符串函数的递归解决方案indexOf
,substring
可能如下所示:
- 我们尝试在字符串的开头找到一个数字 X 的位置来计算前缀的长度。
public static String encode(String str) {
if (str.startsWith("1")) {
// append 0 at start, look for 0 after 1's
return "0 " + encode(str, 0);
}
// string starts with 0, look for the first 1 after 0's
return encode(str, 1);
}
// d - the digit to look for after current prefix
public static String encode(String z, int d) {
int pos = z.indexOf(String.valueOf(d));
if (pos == -1) { // nothing found after current prefix
return String.valueOf(z.length());
}
// append prefix length and toggle the number to look for
return String.valueOf(pos) + " " + encode(z.substring(pos), 1 - d);
}
测试:
for (String s : Arrays.asList("0", "1", "000", "11", "011", "101", "0011100001111100")) {
System.out.println(s + " -> " + encode(s));
}
输出:
0 -> 1
1 -> 0 1
000 -> 3
11 -> 0 2
011 -> 1 2
101 -> 0 1 1 1
0011100001111100 -> 2 3 4 5 2
推荐阅读
- python - HTTPCookieProcessor 未将 cookie 添加到请求标头
- javascript - 检测 iframe 内的点击
- multithreading - 检查线程是否存活
- node.js - 部署 Mean-Stack 项目时出现问题。遇到 CORS 阻塞每个请求的问题
- amazon-web-services - 使用 AWS Elastic BeanStalk 部署 OctoberCMS
- javascript - JavaScript 使用 String 中的动态参数实例化新对象
- c++ - 为什么订户在使用 Hive 代理时可以正常工作,但不能使用本地 Mosquito 代理或 Bevywise 代理?
- r - 需要可变文本出现在 Rmarkdown 中呈现的 WORD 文档的每一页上
- node.js - 猫鼬/nodejs中的验证错误
- azure - 具有自定义域的 SaaS 应用程序的 Azure 网站自定义域所有权验证