1.length(),charAt(),substring()的运行时间是常量时间内完成。
2.toLowerCase()和replace()的运行时间与字符串的大小是线性关系。
3.compareTo()和startWith()需要的时间与所要解决问题所使用的字符数量成比例。在最佳情况下,是常量,在最坏的情况下,是线性的,但是indexOf可能很慢。
4.字符串连接需要的时间与在结果中的字符总数成比例。
5.给出倒序字符串的一种线性算法
public static String reverse(String s){
int N=s.length();
char [] a=new char[N];
for(int i=0;i<N;i++){
a[i]=s.charAt(N-i-1);
}
return new String(a);
}
6.The "beck" exploit(“beck”漏洞). In the Apache 1.2 web server, there is a function called no2slash whose purpose is to collapse multiple '/'s. For example /d1///d2////d3/test.html becomes /d1/d2/d3/test.html. The original algorithm was to repeatedly search for a '/' and copy the remainder of the string over.
void no2slash(char [] name) {
int x, y;
for(x = 0; x<name.length();
if(x>0){
if((name[x-1]=='/')&&(name[x]=='/'))
for(y=x+1;y<name.length;y++){
name[y-1]=name[y];
}
else x++;
}
}
上面的做法是二次方的。
如果使用线性的方式实现如下:
void no2slash(char [] name) {
int offset=0;
for(int i=2;i<name.length();i++){
if(name[i-1]='/'&&name[i]=='/'){
offset++;
}
else a[i-offset]=a[i];
}
}
分享到:
相关推荐
在Java编程语言中,分割字符串是一项常见的操作,它允许我们将一个长字符串分解成多个子字符串,每个子字符串对应原字符串中的某个部分。这通常通过使用`split()`方法来实现,该方法是Java `String`类的一个成员。在...
在Java编程语言中,分割字符串是一项常见的操作,它允许我们将一个长字符串分解成多个子字符串,每个子字符串对应原字符串中的某一部分。这通常通过使用`split()`方法来实现,该方法是`String`类的一个实例方法。让...
总的来说,Java中的`split()`方法是处理字符串的强大工具,它利用正则表达式的灵活性来满足各种分割需求。理解并熟练运用`split()`,能够极大地提升我们的编程效率,特别是在数据处理和文本分析的场景下。在实际编程...
在Java编程语言中,分解字符串是一项常见的任务,它涉及到对字符串进行分析,将字符串分割成多个子字符串。这个过程通常被称为字符串分割。在Java中,我们主要使用`String`类提供的`split()`方法来实现这一功能。...
首先,我们要明白Java中的字符串是`String`类的对象,它提供了丰富的API用于字符串的处理。例如,我们可以使用`substring()`方法来截取字符串的一部分,但这并不适用于提取括号内的内容,因为我们需要识别开括号和闭...
3. **性能考虑**:如果频繁进行日期和字符串之间的转换,可以考虑使用线程安全的`DateTimeFormatter`类(Java 8及以上版本提供)来替代`SimpleDateFormat`,以提高程序的性能。 4. **国际化支持**:如果应用程序需要...
在Java中,我们可以使用`String`类提供的方法或正则表达式来实现字符串的解析。例如,给定字符串“卡巴斯基#杀毒软件#免费版#俄罗斯#”,我们可以用`split()`方法,以“#”为分隔符将字符串分割成多个子字符串。下面...
本文将深入探讨Java中字符串处理的相关知识点,包括`String`类型的特点、构造方法、字符串操作以及与`StringBuffer`的关系。 #### `String`类型概述 在Java中,`String`类型是不可变的,这意味着一旦一个`String`...
在Java编程语言中,字符串是极其重要的数据类型,用于存储和操作文本信息。字符串的长度判断和截取是常见的操作,对于程序逻辑控制和数据处理至关重要。以下将详细讲解如何在Java中进行字符串长度的判断以及如何截取...
在Java编程中,将一个`List<Integer>`转换成以逗号分隔的`String`字符串是一种常见的需求,尤其是在处理数据展示或格式化输出时。Java 8引入了新的特性和方法,使得这种转换变得更加简洁和高效。下面我们将深入探讨...
在这个例子中,我们将使用Java的正则表达式功能来去除字符串中的空格、回车、换行符以及制表符。 ```java public class StringUtils { public static String replaceBlank(String str) { String dest = ""; if ...
在Java编程语言中,处理字符串是非常常见的操作,尤其是在涉及到文本分析和处理的场景。本文将深入探讨如何在Java中进行中文字符的判断和计数,这主要基于Java的Unicode编码特性以及字符集的理解。 首先,我们需要...
在这个例子中,`join()`方法使用了`StringBuilder`来避免创建大量的中间字符串对象,从而提高了性能。`join(Iterable, String)`方法适用于任何实现了`Iterable`接口的集合,包括List、Set等。`join(Map, ?>, String)...
这是因为Java中的字符串是不可变的,每次对字符串进行修改都会生成一个新的对象,这可能会导致内存消耗增加和性能下降。为了解决这个问题,我们可以自定义一个字符串缓冲类来存储和复用字符串,以提高效率。 首先,...
Java字符、字符串、数组操作实例,主要是数组的复制、反转字符串中的字符、命令行参数、求字符串的长度及每一个位置上的字符、数组的排序、String类数组的操作等方面的例子,相信对初学者学习Java有帮助的。
本文将详细介绍Java中字符串的各种操作方法,包括基本的字符串处理功能以及更高级的操作技巧。这些知识点对于Java初学者来说至关重要,并且能够帮助开发者更好地理解和运用Java中的字符串类及其方法。 #### 1. 字符...
6. **处理字符串**:在处理方法中,获取两个文本字段的值,使用`String`类的`replace()` 或 `replaceAll()` 方法删除指定字符,然后更新结果。 7. **显示结果**:在Applet的某个地方(如`JLabel`)显示处理后的字符...
本实验主要涉及三个方面的内容:字符串的基本操作,字符串的比较以及不同字符串类(String和StringBuffer)的使用和性能分析。 首先,我们来看第一个任务,即对字符串"www.google.com"进行处理。这个例子展示了如何...
首先,`StringBuffer`类是Java中用于构建和操作字符串的类,提供了多种方法来插入、删除和替换字符串中的字符。与基本的`String`类不同,`String`是不可变的,每次对`String`对象进行修改都会创建一个新的`String`...
以下是一个简单的Java方法,用于将字符串转换为16进制ASCII表示: ```java public static String strToHex(String input) { StringBuilder hexString = new StringBuilder(); for (char c : input.toCharArray())...