您的位置:首页 > 教育 > 培训 > 怎么判断一个公司是不是外包公司_陕西网络营销外包专业定制_百度pc端提升排名_上海网站制作推广

怎么判断一个公司是不是外包公司_陕西网络营销外包专业定制_百度pc端提升排名_上海网站制作推广

2025/1/13 5:38:31 来源:https://blog.csdn.net/m0_63168877/article/details/145084719  浏览:    关键词:怎么判断一个公司是不是外包公司_陕西网络营销外包专业定制_百度pc端提升排名_上海网站制作推广
怎么判断一个公司是不是外包公司_陕西网络营销外包专业定制_百度pc端提升排名_上海网站制作推广

在这里插入图片描述

一、问题描述

题目描述

给定一个字符串,把字符串按照大写在前小写在后排序,输出排好后的第 K 个字母在原来字符串的索引。相同字母输出第一个出现的位置。

输入描述

输出描述

用例

用例 1

输入:

hAkDAjByBq 4

输出:

6

说明:
排好序后 AABBDhjkqy,第 4 个是 B,第一个出现的在原字符串 6 这个位置。(注:索引是从 0 开始)

解题思路

  1. 读取输入

    • 从标准输入读取一个字符串和一个整数 K
  2. 排序

    • 将字符串中的字符按照大写在前小写在后的顺序排序。具体来说,先将所有大写字母按字典序排序,然后将所有小写字母按字典序排序。
  3. 查找第 K 个字符

    • 在排序后的字符串中找到第 K 个字符。
  4. 查找原字符串中的索引

    • 在原字符串中查找第 K 个字符第一次出现的位置。

详细步骤

  1. 读取输入

    • 读取一行输入,包含一个字符串和一个整数 K
  2. 排序

    • 将字符串中的字符分为大写字母和小写字母。
    • 分别对大写字母和小写字母进行排序。
    • 将排序后的大写字母和小写字母拼接成一个新的字符串。
  3. 查找第 K 个字符

    • 在排序后的字符串中,找到第 K 个字符。
  4. 查找原字符串中的索引

    • 在原字符串中,从左到右查找第 K 个字符第一次出现的位置。

用例解释

用例 1
  • 输入:
    • hAkDAjByBq 4
  • 输出:
    • 6

解释

  • 原字符串:hAkDAjByBq
  • 排序后的字符串:AABBDhjkqy
  • 第 4 个字符是 B
  • 在原字符串中,B 第一次出现的位置是 6

通过上述步骤,我们可以高效地找到排好序后的第 K 个字符在原字符串中的索引。这种方法的时间复杂度主要由排序操作决定,为 O(n log n),其中 n 是字符串的长度。查找操作的时间复杂度为 O(n)

二、JavaScript算法源码

以下是 JavaScript 代码的详细中文注释和逻辑讲解


JavaScript 代码

/* JavaScript Node ACM模式 控制台输入获取 */
const readline = require("readline"); // 引入 readline 模块,用于读取控制台输入// 创建 readline 接口
const rl = readline.createInterface({input: process.stdin,  // 输入流为标准输入output: process.stdout, // 输出流为标准输出
});// 监听 'line' 事件,当用户输入一行内容时触发
rl.on("line", (line) => {// 将输入行按空格分割成数组const [str, idx] = line.split(" ");// 将字符串 str 转换为字符数组,排序后获取第 idx - 1 个字符const ele = [...str].sort()[idx - 1];// 输出该字符在原字符串 str 中的索引位置console.log(str.indexOf(ele));
});

代码逻辑讲解

1. 输入处理
  • 使用 readline 模块读取控制台输入。
  • 监听 line 事件,当用户输入一行内容时触发回调函数。
  • 将输入行按空格分割成数组 [str, idx]
    • str 是输入的字符串。
    • idx 是输入的索引值(字符串形式)。
2. 排序并获取指定字符
  • 将字符串 str 转换为字符数组:
    • 使用扩展运算符 ... 将字符串拆分为字符数组。
    • 例如,"hello" 转换为 ["h", "e", "l", "l", "o"]
  • 对字符数组进行排序:
    • 使用 sort() 方法按字典序排序。
    • 例如,["h", "e", "l", "l", "o"] 排序后为 ["e", "h", "l", "l", "o"]
  • 获取排序后的第 idx - 1 个字符:
    • 由于数组索引从 0 开始,所以需要 idx - 1
    • 例如,idx = 2,则获取 ["e", "h", "l", "l", "o"][1],即 "h"
3. 查找字符在原字符串中的索引
  • 使用 indexOf() 方法查找字符 ele 在原字符串 str 中的索引位置。
    • 例如,str = "hello"ele = "h",则 str.indexOf("h") 返回 0
4. 输出结果
  • 使用 console.log() 输出字符在原字符串中的索引位置。

代码细节解析

1. readline 模块
  • 用于逐行读取控制台输入。
  • createInterface() 方法创建一个接口对象,绑定输入流和输出流。
  • rl.on("line", callback) 监听用户输入,每次输入一行时触发回调函数。
2. split() 方法
  • 将字符串按空格分割成数组。
  • 例如,"hello 2" 分割为 ["hello", "2"]
3. ... 扩展运算符
  • 将字符串拆分为字符数组。
  • 例如,..."hello" 转换为 ["h", "e", "l", "l", "o"]
4. sort() 方法
  • 对数组按字典序排序。
  • 例如,["h", "e", "l", "l", "o"] 排序后为 ["e", "h", "l", "l", "o"]
5. indexOf() 方法
  • 返回字符在字符串中第一次出现的索引位置。
  • 如果字符不存在,返回 -1
  • 例如,"hello".indexOf("h") 返回 0

示例运行

输入
hello 2
步骤解析
  1. 输入字符串 "hello 2"
  2. 分割为 ["hello", "2"]
  3. "hello" 转换为字符数组 ["h", "e", "l", "l", "o"]
  4. 排序后为 ["e", "h", "l", "l", "o"]
  5. 获取第 2 - 1 = 1 个字符 "h"
  6. 查找 "h" 在原字符串 "hello" 中的索引位置 0
  7. 输出结果:0

总结

  • 功能:根据输入的字符串和索引值,找到排序后的指定字符在原字符串中的索引位置。
  • 适用场景:处理字符串排序和索引查找问题。
  • 注意事项
    • 如果输入的索引值超出范围(例如大于字符串长度),会导致 undefined 错误。
    • 如果字符在原字符串中不存在,indexOf() 返回 -1

如果有其他问题,欢迎随时提问!

三、Java算法源码

以下是 Java 代码的详细中文注释和逻辑讲解


Java 代码

import java.util.Arrays; // 导入 Arrays 工具类,用于数组排序
import java.util.Scanner; // 导入 Scanner 类,用于读取控制台输入public class Main {// 主方法,程序入口public static void main(String[] args) {Scanner sc = new Scanner(System.in); // 创建 Scanner 对象,用于读取输入String str = sc.next(); // 读取输入的字符串int idx = sc.nextInt(); // 读取输入的索引值System.out.println(getResult(str, idx)); // 调用 getResult 方法并输出结果}// 算法入口,计算排序后指定索引字符在原字符串中的位置public static int getResult(String str, int idx) {char[] sArr = str.toCharArray(); // 将字符串转换为字符数组Arrays.sort(sArr); // 对字符数组按字典序排序char target = sArr[idx - 1]; // 获取排序后的第 idx - 1 个字符return str.indexOf(target); // 返回该字符在原字符串中的索引位置}
}

代码逻辑讲解

1. 输入处理
  • 使用 Scanner 类读取控制台输入。
    • sc.next() 读取一个字符串(以空格或换行符分隔)。
    • sc.nextInt() 读取一个整数。
  • 例如,输入 "hello 2"
    • str = "hello"
    • idx = 2
2. 字符数组排序
  • 将字符串 str 转换为字符数组 sArr
    • 使用 toCharArray() 方法。
    • 例如,"hello" 转换为 ['h', 'e', 'l', 'l', 'o']
  • 对字符数组 sArr 进行排序:
    • 使用 Arrays.sort() 方法按字典序排序。
    • 例如,['h', 'e', 'l', 'l', 'o'] 排序后为 ['e', 'h', 'l', 'l', 'o']
3. 获取目标字符
  • 从排序后的字符数组 sArr 中获取第 idx - 1 个字符:
    • 由于数组索引从 0 开始,所以需要 idx - 1
    • 例如,idx = 2,则获取 ['e', 'h', 'l', 'l', 'o'][1],即 'h'
4. 查找字符在原字符串中的索引
  • 使用 indexOf() 方法查找字符 target 在原字符串 str 中的索引位置。
    • 例如,str = "hello"target = 'h',则 str.indexOf('h') 返回 0
5. 输出结果
  • 使用 System.out.println() 输出字符在原字符串中的索引位置。

代码细节解析

1. Scanner
  • 用于读取控制台输入。
  • next() 方法读取一个字符串(以空格或换行符分隔)。
  • nextInt() 方法读取一个整数。
2. toCharArray() 方法
  • 将字符串转换为字符数组。
  • 例如,"hello" 转换为 ['h', 'e', 'l', 'l', 'o']
3. Arrays.sort() 方法
  • 对数组按字典序排序。
  • 例如,['h', 'e', 'l', 'l', 'o'] 排序后为 ['e', 'h', 'l', 'l', 'o']
4. indexOf() 方法
  • 返回字符在字符串中第一次出现的索引位置。
  • 如果字符不存在,返回 -1
  • 例如,"hello".indexOf('h') 返回 0

示例运行

输入
hello 2
步骤解析
  1. 输入字符串 "hello 2"
  2. 读取 str = "hello"idx = 2
  3. "hello" 转换为字符数组 ['h', 'e', 'l', 'l', 'o']
  4. 排序后为 ['e', 'h', 'l', 'l', 'o']
  5. 获取第 2 - 1 = 1 个字符 'h'
  6. 查找 'h' 在原字符串 "hello" 中的索引位置 0
  7. 输出结果:0

总结

  • 功能:根据输入的字符串和索引值,找到排序后的指定字符在原字符串中的索引位置。
  • 适用场景:处理字符串排序和索引查找问题。
  • 注意事项
    • 如果输入的索引值超出范围(例如大于字符串长度),会导致数组越界异常。
    • 如果字符在原字符串中不存在,indexOf() 返回 -1

如果有其他问题,欢迎随时提问!

四、Python算法源码

以下是 Python 代码的详细中文注释和逻辑讲解


Python 代码

# 输入获取
s, i = input().split()  # 读取输入的一行内容,按空格分割为字符串 s 和索引 i# 算法入口
def getResult():sArr = list(s)  # 将字符串 s 转换为字符列表sArr.sort()  # 对字符列表按字典序排序tar = sArr[int(i) - 1]  # 获取排序后的第 int(i) - 1 个字符return s.find(tar)  # 返回该字符在原字符串 s 中的索引位置# 算法调用
print(getResult())  # 调用 getResult 方法并输出结果

代码逻辑讲解

1. 输入处理
  • 使用 input().split() 读取控制台输入的一行内容,并按空格分割为两个部分:
    • s:输入的字符串。
    • i:输入的索引值(字符串形式)。
  • 例如,输入 "hello 2"
    • s = "hello"
    • i = "2"
2. 字符列表排序
  • 将字符串 s 转换为字符列表 sArr
    • 使用 list(s) 方法。
    • 例如,"hello" 转换为 ['h', 'e', 'l', 'l', 'o']
  • 对字符列表 sArr 进行排序:
    • 使用 sort() 方法按字典序排序。
    • 例如,['h', 'e', 'l', 'l', 'o'] 排序后为 ['e', 'h', 'l', 'l', 'o']
3. 获取目标字符
  • 从排序后的字符列表 sArr 中获取第 int(i) - 1 个字符:
    • 由于列表索引从 0 开始,所以需要 int(i) - 1
    • 例如,i = "2",则获取 ['e', 'h', 'l', 'l', 'o'][1],即 'h'
4. 查找字符在原字符串中的索引
  • 使用 find() 方法查找字符 tar 在原字符串 s 中的索引位置。
    • 例如,s = "hello"tar = 'h',则 s.find('h') 返回 0
5. 输出结果
  • 使用 print() 输出字符在原字符串中的索引位置。

代码细节解析

1. input().split()
  • 读取控制台输入的一行内容,并按空格分割为列表。
  • 例如,输入 "hello 2",分割为 ["hello", "2"]
2. list(s)
  • 将字符串转换为字符列表。
  • 例如,"hello" 转换为 ['h', 'e', 'l', 'l', 'o']
3. sort()
  • 对列表按字典序排序。
  • 例如,['h', 'e', 'l', 'l', 'o'] 排序后为 ['e', 'h', 'l', 'l', 'o']
4. find()
  • 返回字符在字符串中第一次出现的索引位置。
  • 如果字符不存在,返回 -1
  • 例如,"hello".find('h') 返回 0

示例运行

输入
hello 2
步骤解析
  1. 输入字符串 "hello 2"
  2. 分割为 s = "hello"i = "2"
  3. "hello" 转换为字符列表 ['h', 'e', 'l', 'l', 'o']
  4. 排序后为 ['e', 'h', 'l', 'l', 'o']
  5. 获取第 2 - 1 = 1 个字符 'h'
  6. 查找 'h' 在原字符串 "hello" 中的索引位置 0
  7. 输出结果:0

总结

  • 功能:根据输入的字符串和索引值,找到排序后的指定字符在原字符串中的索引位置。
  • 适用场景:处理字符串排序和索引查找问题。
  • 注意事项
    • 如果输入的索引值超出范围(例如大于字符串长度),会导致列表越界异常。
    • 如果字符在原字符串中不存在,find() 返回 -1

如果有其他问题,欢迎随时提问!

五、C/C++算法源码:

以下是 C++ 代码的详细中文注释和逻辑讲解


C++ 代码

#include <iostream>  // 包含输入输出流库
#include <algorithm> // 包含算法库,用于排序
#include <string>    // 包含字符串库using namespace std; // 使用标准命名空间// 算法入口
int getResult(string s, int i) {// 将字符串 s 转换为字符数组char sArr[s.length()];for (int j = 0; j < s.length(); j++) {sArr[j] = s[j];}// 对字符数组按字典序排序sort(sArr, sArr + s.length());// 获取排序后的第 i - 1 个字符char tar = sArr[i - 1];// 返回该字符在原字符串 s 中的索引位置return s.find(tar);
}int main() {// 输入获取string s;int i;cin >> s >> i; // 读取输入的字符串和索引值// 算法调用cout << getResult(s, i) << endl; // 调用 getResult 方法并输出结果return 0;
}

代码逻辑讲解

1. 输入处理
  • 使用 cin 读取控制台输入:
    • cin >> s 读取一个字符串。
    • cin >> i 读取一个整数。
  • 例如,输入 "hello 2"
    • s = "hello"
    • i = 2
2. 字符数组排序
  • 将字符串 s 转换为字符数组 sArr
    • 使用循环将字符串的每个字符赋值给字符数组。
    • 例如,"hello" 转换为 ['h', 'e', 'l', 'l', 'o']
  • 对字符数组 sArr 进行排序:
    • 使用 sort() 函数按字典序排序。
    • 例如,['h', 'e', 'l', 'l', 'o'] 排序后为 ['e', 'h', 'l', 'l', 'o']
3. 获取目标字符
  • 从排序后的字符数组 sArr 中获取第 i - 1 个字符:
    • 由于数组索引从 0 开始,所以需要 i - 1
    • 例如,i = 2,则获取 ['e', 'h', 'l', 'l', 'o'][1],即 'h'
4. 查找字符在原字符串中的索引
  • 使用 find() 方法查找字符 tar 在原字符串 s 中的索引位置。
    • 例如,s = "hello"tar = 'h',则 s.find('h') 返回 0
5. 输出结果
  • 使用 cout 输出字符在原字符串中的索引位置。

代码细节解析

1. cin
  • 用于读取控制台输入。
  • cin >> s 读取一个字符串(以空格或换行符分隔)。
  • cin >> i 读取一个整数。
2. 字符数组
  • 使用 char sArr[s.length()] 定义字符数组。
  • 使用循环将字符串的每个字符赋值给字符数组。
3. sort()
  • 对数组按字典序排序。
  • 例如,['h', 'e', 'l', 'l', 'o'] 排序后为 ['e', 'h', 'l', 'l', 'o']
4. find()
  • 返回字符在字符串中第一次出现的索引位置。
  • 如果字符不存在,返回 string::npos(通常为 -1)。
  • 例如,"hello".find('h') 返回 0

示例运行

输入
hello 2
步骤解析
  1. 输入字符串 "hello 2"
  2. 读取 s = "hello"i = 2
  3. "hello" 转换为字符数组 ['h', 'e', 'l', 'l', 'o']
  4. 排序后为 ['e', 'h', 'l', 'l', 'o']
  5. 获取第 2 - 1 = 1 个字符 'h'
  6. 查找 'h' 在原字符串 "hello" 中的索引位置 0
  7. 输出结果:0

总结

  • 功能:根据输入的字符串和索引值,找到排序后的指定字符在原字符串中的索引位置。
  • 适用场景:处理字符串排序和索引查找问题。
  • 注意事项
    • 如果输入的索引值超出范围(例如大于字符串长度),会导致数组越界异常。
    • 如果字符在原字符串中不存在,find() 返回 string::npos(通常为 -1)。

如果有其他问题,欢迎随时提问!

版权声明:

本网仅为发布的内容提供存储空间,不对发表、转载的内容提供任何形式的保证。凡本网注明“来源:XXX网络”的作品,均转载自其它媒体,著作权归作者所有,商业转载请联系作者获得授权,非商业转载请注明出处。

我们尊重并感谢每一位作者,均已注明文章来源和作者。如因作品内容、版权或其它问题,请及时与我们联系,联系邮箱:809451989@qq.com,投稿邮箱:809451989@qq.com