我正在尝试理解函数的时间复杂度计算,但我在这一点上陷入困境。与 for 循环不同,下面代码中显示的而循环将取决于输入字符串长度。如何计算此类案件的时间复杂度?
功能这是
块引用
输入数据: 4Gopi7Krishna3Msc5India
输出数据: {"4":"Gopi","7":"Krishna","3":"Msc","5":"India"}
输入数据和长度可能每次都有所不同。
public static String SplitData(String input) {
try {
String outputJSON = "{";
boolean run = true;
while (run) {
String firstChar = String.valueOf(input.charAt(0));
int length = Integer.parseInt(firstChar);
if (length > 0) {
String data = input.substring(1, (length + 1));
outputJSON = outputJSON + "\"" + String.valueOf(length) + "\":\"" + data + "\"";
if (length + 1 == input.length()) {
run = false;
outputJSON = outputJSON + "}";
System.out.println("TAG " + length + " LENGTH " + length + " DATA " + data + " INPUT " + input);
} else {
outputJSON = outputJSON + ",";
input = input.substring(length + 1, input.length());
System.out.println("TAG " + length + " LENGTH " + length + " DATA " + data + " INPUT " + input);
}
} else //IF INPUT IS NOT VALID MAKE THE RETURN JSON NULL
{
run = false;
outputJSON = "Invalid Input";
}
}
return outputJSON;
} catch (Exception e) {
e.printStackTrace();
return "Invalid Input";
}
}
答案 0 :(得分:0)
复杂性取决于执行结束前可能的操作次数,如果你不改变内部的操作,for循环就不会更快。 通过使用字符串操作函数
,这个函数可以更简单,更快捷/var/git_repos