📌  相关文章
📜  用于查询给定字符串在恒定时间内的旋转和第 K 个字符的Java程序(1)

📅  最后修改于: 2023-12-03 15:11:17.262000             🧑  作者: Mango

用于查询给定字符串在恒定时间内的旋转和第K个字符的Java程序

在字符串匹配中,经常需要在给定字符串中查询一些信息,例如该字符串的旋转和第K个字符。这里我们提供一种Java程序,可以在恒定时间内查询给定字符串的旋转和第K个字符。

代码实现
public class StringManipulator {
    private final String s;
    private final int n;

    public StringManipulator(String s) {
        this.s = s;
        this.n = s.length();
    }

    // 按字符旋转字符串
    public String rotate(int k) {
        k %= n;
        return s.substring(k) + s.substring(0, k);
    }

    // 查询字符串的第k个字符
    public char kthChar(int k) {
        k %= n;
        if (k < 0) k += n;
        return s.charAt(k);
    }
}
使用方法
String s = "programming";
StringManipulator sm = new StringManipulator(s);

// 旋转字符串
String rotated = sm.rotate(3);   // "grammingpro"
 
// 查询第k个字符
char c = sm.kthChar(4);          // 'g'
示例解释

我们通过一个示例来解释程序的使用方法:

String s = "programming";
StringManipulator sm = new StringManipulator(s);

String rotated = sm.rotate(3);  // "grammingpro"

这里将原字符串 "programming" 按字符旋转3位得到 "grammingpro"

另外,我们可以通过下面的代码查询原字符串的第4个字符:

char c = sm.kthChar(4);  // 'g'

这里返回原字符串的第4个字符 'g'

时间复杂度

程序的时间复杂度为O(n),其中n为字符串的长度,因为两个操作都是基于一些简单的字符串操作,可以在恒定时间内完成。因此,可以说该程序具有高效性和稳定性。