Java查找字符第N次出现的位置

1. 流程概述

要实现“Java查找字符第N次出现的位置”,我们可以按照以下步骤进行:

步骤 描述
1. 输入字符串和字符 从用户处获取待查找的字符串和目标字符
2. 初始化计数器 设置一个计数器,初始值为0
3. 遍历字符串 逐个字符遍历字符串
4. 判断字符是否匹配 对每个字符进行匹配,如果匹配则计数器加1
5. 判断计数器是否等于目标次数 如果计数器等于目标次数,返回当前字符的位置
6. 返回未找到的情况 如果遍历完整个字符串都没有找到目标字符的第N次出现,返回-1

2. 代码实现

接下来我们将一步步实现上述流程。

public class CharacterFinder {
    public static int findNthOccurrence(String str, char targetChar, int n) {
        int count = 0; // 初始化计数器
        for (int i = 0; i < str.length(); i++) {
            if (str.charAt(i) == targetChar) { // 判断字符是否匹配
                count++; // 计数器加1
                if (count == n) { // 判断计数器是否等于目标次数
                    return i; // 返回当前字符的位置
                }
            }
        }
        return -1; // 返回未找到的情况
    }
}

在上述代码中,我们定义了一个名为CharacterFinder的类,其中包含了一个静态方法findNthOccurrence,用于查找字符第N次出现的位置。该方法接收三个参数:待查找的字符串str,目标字符targetChar以及目标次数n

首先,我们初始化一个计数器count,用于记录目标字符的出现次数。然后,我们通过一个循环遍历字符串的每个字符,并将其与目标字符进行比较。如果匹配成功,计数器count加1。当计数器count等于目标次数n时,说明找到了目标字符的第N次出现,我们返回当前字符的位置i。如果遍历完整个字符串都没有找到目标字符的第N次出现,我们返回-1。

3. 代码示例

下面是一个使用示例,演示了如何调用findNthOccurrence方法来查找字符串中字符第N次出现的位置。

public class Main {
    public static void main(String[] args) {
        String str = "Hello, World!";
        char targetChar = 'o';
        int n = 2;
        int position = CharacterFinder.findNthOccurrence(str, targetChar, n);
        if (position != -1) {
            System.out.println("The character '" + targetChar + "' occurs for the " + n + "th time at position " + position);
        } else {
            System.out.println("The character '" + targetChar + "' does not occur for the " + n + "th time in the string");
        }
    }
}

在上述示例中,我们定义了一个名为Main的类,并在其main方法中调用了CharacterFinder类的findNthOccurrence方法。我们设置了一个字符串str为"Hello, World!",目标字符targetChar为'o',目标次数n为2。然后,我们通过调用CharacterFinder.findNthOccurrence(str, targetChar, n)来查找字符'o'在字符串中第2次出现的位置。

如果找到了目标字符的第N次出现,我们输出结果为"The character 'o' occurs for the 2th time at position 4"。如果未找到目标字符的第N次出现,我们输出结果为"The character 'o' does not occur for the 2th time in the string"。

4. 状态图

下面是一个状态图,描述了从输入字符串和字符到输出结果的整个过程。

stateDiagram
    [*] --> 输入字符串和字符
    输入字符串和字符 --> 初始化计数器
    初始化计数器 --> 遍历字符串
    遍历字符串 --> 判断字符是否匹配
    判断字符是否匹配