字符串相关知识

目录

一、Java中的字符串

1. 定义与创建

2. 字符串操作

(1)连接

(2)获取长度

(3)查找子串

(4)字符串比较

(5) 字符串转换

(6)Java中的字符串基本操作拓展

一、创建字符串

1. 直接创建字符串常量

2. 使用String类构造函数创建

二、获取字符串信息

1. 获取字符串长度

2. 获取指定位置的字符

三、字符串比较

1. 使用equals()方法比较内容

2. 使用equalsIgnoreCase()方法忽略大小写比较内容

3. 使用compareTo()方法比较字符串大小关系(字典序)

四、字符串查找

1. 查找子串首次出现的位置(indexOf)

2. 查找子串最后一次出现的位置(lastIndexOf)

五、字符串截取

六、字符串替换

1. 使用replace方法替换单个字符

2. 使用replaceAll方法按照正则表达式替换

3. 使用replaceFirst方法替换首次匹配的子串

3.Java中的字符串拓展

1. 不可变性

2. 字符串格式化

3. 字符串池

4. 遍历字符串

5. 正则表达式与字符串

6. 国际化(i18n)与字符串

7. 空字符串与null的区别

8. 字符串编码转换(高级用法)

二、C++中的字符串

1. 定义与创建(C++ 中的std::string)

2. 字符串操作

(1)连接

(2)获取长度

(3)索引和切片(C++中的子串操作)

(4)查找子串

(5) 字符串比较

(5)字符串与字符数组的转换

(6)C++中的字符串基本操作拓展

一、创建字符串

1. 直接初始化

2. 默认初始化

3. 从字符数组初始化

4. 使用部分字符数组初始化

二、获取字符串信息

1. 获取字符串长度

2. 获取指定位置的字符

三、字符串比较

1. 使用比较运算符(==、!=、<、>、<=、>=)

2. 使用compare方法比较字符串大小关系(字典序)

四、字符串查找

1. 查找子串首次出现的位置(find)

2. 查找子串最后一次出现的位置(rfind)

五、字符串截取

1. 使用substr方法截取子串(从指定位置到末尾)

2. 使用substr方法截取指定范围的子串

六、字符串替换

1. 使用replace方法替换单个字符或子串

3.C++中的字符串拓展

1. 内存管理

2. 字符串的迭代器

3. 字符串与数字的转换

4. 原始字符串字面量(C++11引入)

5. 字符串的拼接效率优化

6. 自定义字符串类(进阶概念)

7. C++20中的字符串新特性(如果适用)

8. 字符串与文件操作


以下是Java和C++中的字符串相关知识:

一、Java中的字符串

1. 定义与创建

• 在Java中,字符串是对象。可以使用双引号直接创建字符串常量,例如:String str = "Hello";

• 也可以使用String类的构造函数创建字符串对象,如String str = new String("Hello");,不过直接使用双引号创建字符串更为常用,因为Java会对相同内容的字符串常量进行优化,使其在内存中只有一份。

2. 字符串操作

(1)连接

• 可以使用+运算符连接字符串。例如:String s1 = "Hello"; String s2 = " World"; String result = s1 + s2;

• 也可以使用StringBuilder或StringBuffer类(在需要频繁连接字符串时效率更高)进行连接操作。例如:

• StringBuilder sb = new StringBuilder();

• sb.append("Hello");

• sb.append(" World");

• String result = sb.toString();

(2)获取长度

• 使用length()方法获取字符串的长度。例如:String str = "Hello"; int len = str.length();

• 索引和切片(Java中称为子串操作)

• 使用charAt()方法获取指定索引处的字符,索引从0开始。例如:String str = "Hello"; char c = str.charAt(1);(这里c的值为'e')

• 使用substring()方法获取子串。有两种重载形式:

• substring(int beginIndex):返回从beginIndex开始到字符串末尾的子串。例如:String str = "Hello"; String sub = str.substring(1);(sub的值为"ello")

• substring(int beginIndex, int endIndex):返回从beginIndex开始到endIndex - 1的子串。例如:String str = "Hello"; String sub = str.substring(1, 3);(sub的值为"el")

(3)查找子串

• 使用indexOf()方法查找子串首次出现的位置,若找到则返回索引值,否则返回 - 1。例如:String str = "Hello World"; int pos = str.indexOf("World");(pos的值为6)

• 还有lastIndexOf()方法用于查找子串最后一次出现的位置。

(4)字符串比较

• 使用equals()方法比较两个字符串的内容是否相等。例如:String s1 = "Hello"; String s2 = new String("Hello"); boolean isEqual = s1.equals(s2);(isEqual的值为true)

• 注意不要使用==来比较字符串内容,==在Java中比较的是对象的引用(内存地址),除非是比较字符串常量(因为Java对相同内容的字符串常量优化为同一对象)。

(5) 字符串转换

• 可以使用getBytes()方法将字符串转换为字节数组(例如在进行网络传输或文件存储时),默认使用平台的字符编码。例如:String str = "Hello"; byte[] bytes = str.getBytes();

• 使用toCharArray()方法将字符串转换为字符数组。例如:String str = "Hello"; char[] charArray = str.toCharArray();

(6)Java中的字符串基本操作拓展

一、创建字符串
1. 直接创建字符串常量

• 使用双引号创建字符串常量是最常见的方式。例如:String str1 = "Hello, World!";这种方式创建的字符串会被存储在字符串池中(如果池中不存在相同内容的字符串)。

2. 使用String类构造函数创建

• 可以从字符数组创建字符串。例如:char[] charArray = {'H', 'e', 'l', 'l', 'o'}; String str2 = new String(charArray);

• 也可以指定字符数组的一部分来创建字符串。例如:char[] charArray = {'H', 'e', 'l', 'l', 'o'}; String str3 = new String(charArray, 1, 3); // 从索引1开始取3个字符,结果为 "ell"

二、获取字符串信息
1. 获取字符串长度

• 使用length()方法。例如:String str = "Hello"; int len = str.length(); // len的值为5

2. 获取指定位置的字符

• 使用charAt()方法。例如:String str = "Hello"; char c = str.charAt(1); // c的值为 'e'

三、字符串比较
1. 使用equals()方法比较内容

• 例如:String s1 = "Hello"; String s2 = new String("Hello"); boolean isEqual = s1.equals(s2); // isEqual为true

2. 使用equalsIgnoreCase()方法忽略大小写比较内容

• 例如:String s1 = "Hello"; String s2 = "hello"; boolean isEqualIgnoreCase = s1.equalsIgnoreCase(s2); // isEqualIgnoreCase为true

3. 使用compareTo()方法比较字符串大小关系(字典序)

• 例如:String s1 = "Apple"; String s2 = "Banana"; int result = s1.compareTo(s2); // result为负数,因为 "Apple" 在字典序中排在 "Banana" 之前

四、字符串查找
1. 查找子串首次出现的位置(indexOf)

• 例如:String str = "Hello, World!"; int pos = str.indexOf("World"); // pos的值为7

• 还可以指定从哪个索引位置开始查找。例如:int pos2 = str.indexOf("o", 5); // 从索引5开始查找字符 'o' 的位置

2. 查找子串最后一次出现的位置(lastIndexOf)

• 例如:String str = "Hello, World, Hello"; int pos = str.lastIndexOf("Hello"); // pos的值为13

五、字符串截取

1. 使用substring方法截取子串(从指定位置到末尾)

• 例如:String str = "Hello, World!"; String sub1 = str.substring(7); // sub1的值为 "World!"

2. 使用substring方法截取指定范围的子串

• 例如:String str = "Hello, World!"; String sub2 = str.substring(0, 5); // sub2的值为 "Hello"

六、字符串替换
1. 使用replace方法替换单个字符

• 例如:String str = "Hello"; String newStr = str.replace('l', 'p'); // newStr的值为 "Heppo"

2. 使用replaceAll方法按照正则表达式替换

• 例如:String str = "Hello123"; String newStr = str.replaceAll("\\d", "X"); // newStr的值为 "HelloXXX",将所有数字替换为 'X'

3. 使用replaceFirst方法替换首次匹配的子串

• 例如:String str = "Hello, World, Hello"; String newStr = str.replaceFirst("Hello", "Hi"); // newStr的值为 "Hi, World, Hello"

3.Java中的字符串拓展

1. 不可变性

• 在Java中,String对象是不可变的。一旦创建,就不能修改其内容。例如:

• String str = "Hello";

• 当执行str = str + " World";时,实际上是创建了一个新的String对象,而原有的"Hello"对象并没有被修改。这一特性使得字符串在多线程环境下使用更加安全,但在频繁修改字符串内容的情况下,可能会导致性能问题(可以使用StringBuilder或StringBuffer来解决)。

2. 字符串格式化

• Java提供了String.format()方法用于格式化字符串,类似于C语言中的printf风格的格式化。例如:

• int num = 10;

• String formatted = String.format("The number is %d", num);

• 支持的格式化符号有%d(整数)、%f(浮点数)、%s(字符串)等,还可以指定格式化的宽度、精度等参数,如String.format("%.2f", 3.14159)会将浮点数格式化为保留两位小数的字符串。

3. 字符串池

• Java为了提高性能和节省内存,维护了一个字符串池。当使用双引号创建字符串常量时,JVM会首先在字符串池中查找是否已经存在相同内容的字符串,如果存在,则直接返回该字符串的引用;如果不存在,则创建一个新的字符串对象并放入字符串池中。例如:

• String s1 = "Hello";

• String s2 = "Hello";

• 这里s1和s2实际上指向字符串池中的同一个对象,可以使用==进行比较(因为它们是同一个对象的引用),并且这种比较方式在比较字符串常量时是有效的,但对于使用new创建的字符串对象则不适用(因为new总是创建一个新的对象实例)。

4. 遍历字符串

• 可以使用for - each循环遍历字符串中的字符。例如:

• String str = "Hello";

• for (char c : str) {

• System.out.println(c);

• }

• 也可以使用传统的for循环结合charAt()方法进行遍历:

• for (int i = 0; i < str.length(); i++) {

• char c = str.charAt(i);

• System.out.println(c);

• }

5. 正则表达式与字符串

• Java中的String类提供了一些与正则表达式相关的方法。例如,matches()方法用于判断字符串是否匹配某个正则表达式模式。

• String str = "12345";

• boolean isNumeric = str.matches("\\d+"); // 判断是否全是数字,这里isNumeric为true

• split()方法可以根据正则表达式来分割字符串。

• String text = "apple,banana,cherry";

• String[] parts = text.split(","); // 按照逗号分割字符串,得到一个包含"apple"、"banana"和"cherry"的数组

• replaceAll()方法使用正则表达式替换字符串中的部分内容。

• String input = "Hello, world!";

• String output = input.replaceAll("world", "Java"); // 将"world"替换为"Java",得到"Hello, Java!"

6. 国际化(i18n)与字符串

• Java通过java.util.ResourceBundle类支持国际化。可以将不同语言版本的字符串存储在资源文件(通常是.properties文件)中。

• 例如,有一个messages.properties文件包含默认语言(如英语)的字符串:greeting=Hello,和一个messages_fr.properties文件包含法语版本的字符串:greeting=Bonjour。

• 在代码中,可以这样使用:

• ResourceBundle bundle = ResourceBundle.getBundle("messages", Locale.getDefault());

• String greeting = bundle.getString("greeting");

7. 空字符串与null的区别

• 在Java中,空字符串""是一个长度为0的有效字符串对象,而null表示没有字符串对象的引用。

• 在处理字符串时需要注意区分这两种情况。例如:

• String str1 = "";

• String str2 = null;

• 当调用str1.length()时会返回0,而调用str2.length()会抛出NullPointerException。

8. 字符串编码转换(高级用法)

• 如果需要在不同的字符编码之间进行转换,可以使用java.nio.charset.Charset类。

• 例如,将UTF - 8编码的字节数组转换为字符串:

• byte[] utf8Bytes = { - 17, - 65, - 67, 72, 101, 108, 108, 111};

• Charset utf8Charset = Charset.forName("UTF - 8");

• String str = new String(utf8Bytes, utf8Charset);

二、C++中的字符串

1. 定义与创建(C++ 中的std::string)

• 在C++中,可以使用std::string类型来处理字符串。需要包含<string>头文件。例如:#include <string>,然后可以创建字符串对象,如std::string str = "Hello";

• 也可以使用构造函数创建空字符串或从字符数组创建字符串,如std::string str1;(创建空字符串),char arr[] = "Hello"; std::string str2(arr);

2. 字符串操作

(1)连接

• 可以使用+运算符连接std::string对象和字符串字面量或其他std::string对象。例如:std::string s1 = "Hello"; std::string s2 = " World"; std::string result = s1 + s2;

• 还可以使用append()方法来连接字符串。例如:std::string s1 = "Hello"; std::string s2 = " World"; s1.append(s2);

(2)获取长度

• 使用length()或size()方法获取字符串的长度。例如:std::string str = "Hello"; int len = str.length();或者int len = str.size();

(3)索引和切片(C++中的子串操作)

• 可以使用[]运算符访问字符串中的单个字符,索引从0开始。例如:std::string str = "Hello"; char c = str[1];(这里c的值为'e')

• 使用substr()方法获取子串。例如:std::string str = "Hello World"; std::string sub = str.substr(6);(sub的值为"World"),也可以指定长度,如std::string sub = str.substr(0, 5);(sub的值为"Hello")

(4)查找子串

• 使用find()方法查找子串首次出现的位置,若找到则返回索引值,否则返回std::string::npos。例如:std::string str = "Hello World"; size_t pos = str.find("World");

(5) 字符串比较

• 可以使用==、!=、<、>、<=、>=等运算符比较std::string对象。例如:std::string s1 = "Hello"; std::string s2 = "Hello"; bool isEqual = s1 == s2;


(5)字符串与字符数组的转换

• 从std::string转换为字符数组:可以使用c_str()方法,它返回一个指向以空字符结尾的C - 风格字符串(字符数组)的指针。例如:std::string str = "Hello"; const char* cstr = str.c_str();

• 从字符数组创建std::string对象如前面所述,可以直接使用构造函数或者赋值操作。例如:char arr[] = "Hello"; std::string str(arr);

(6)C++中的字符串基本操作拓展

一、创建字符串
1. 直接初始化

• 使用std::string类型,直接用字符串常量初始化。例如:std::string str1 = "Hello";

2. 默认初始化

• 例如:std::string str2; 创建一个空字符串。

3. 从字符数组初始化

• 例如:char arr[] = "Hello"; std::string str3(arr);

4. 使用部分字符数组初始化

• 例如:char arr[] = "Hello"; std::string str4(arr, 1, 3); // 从索引1开始取3个字符,结果为 "ell"

二、获取字符串信息
1. 获取字符串长度

• 使用length()或size()方法,它们是等效的。例如:std::string str = "Hello"; size_t len = str.length(); // len的值为5

2. 获取指定位置的字符

• 使用[]运算符。例如:std::string str = "Hello"; char c = str[1]; // c的值为 'e'

三、字符串比较
1. 使用比较运算符(==、!=、<、>、<=、>=)

• 例如:std::string s1 = "Hello"; std::string s2 = "Hello"; bool isEqual = s1 == s2; // isEqual为true

2. 使用compare方法比较字符串大小关系(字典序)

• 例如:std::string s1 = "Apple"; std::string s2 = "Banana"; int result = s1.compare(s2); // result为负数,因为 "Apple" 在字典序中排在 "Banana" 之前

四、字符串查找
1. 查找子串首次出现的位置(find)

• 例如:std::string str = "Hello, World!"; size_t pos = str.find("World"); // pos的值为7

• 还可以指定从哪个索引位置开始查找。例如:size_t pos2 = str.find("o", 5); // 从索引5开始查找字符 'o' 的位置

2. 查找子串最后一次出现的位置(rfind)

• 例如:std::string str = "Hello, World, Hello"; size_t pos = str.rfind("Hello"); // pos的值为13

五、字符串截取
1. 使用substr方法截取子串(从指定位置到末尾)

• 例如:std::string str = "Hello, World!"; std::string sub1 = str.substr(7); // sub1的值为 "World!"

2. 使用substr方法截取指定范围的子串

• 例如:std::string str = "Hello, World!"; std::string sub2 = str.substr(0, 5); // sub2的值为 "Hello"

六、字符串替换
1. 使用replace方法替换单个字符或子串

• 例如:std::string str = "Hello"; str.replace(1, 1, "p"); // 将索引1处的字符替换为 'p',结果为 "Hepo"

• 例如:std::string str = "Hello, World"; str.replace(str.find("World"), 5, "Universe"); // 将 "World" 替换为 "Universe",结果为 "Hello, Universe"

3.C++中的字符串拓展

1. 内存管理

• 与Java不同,C++中的std::string对象需要考虑内存管理。不过,std::string类内部已经对内存进行了有效的管理。当字符串的长度发生变化时(如连接、追加操作),std::string会自动重新分配足够的内存来容纳新的内容。例如:

• std::string str = "Hello";

• str = str + " World";

• 在这个过程中,std::string类会处理内存的重新分配,以确保能够存储新的字符串内容。

2. 字符串的迭代器

• 可以使用迭代器来遍历std::string对象。例如:

• std::string str = "Hello";

• for (std::string::iterator it = str.begin(); it!= str.end(); ++it) {

• std::cout << *it;

• }

• 也可以使用基于范围的for循环(C++11引入),这是一种更简洁的遍历方式:

• std::string str = "Hello";

• for (char c : str) {

• std::cout << c;

• }

3. 字符串与数字的转换

• 字符串转数字

• 对于将字符串转换为整数,可以使用std::stoi(转换为int)、std::stol(转换为long)等函数。例如:

• std::string numStr = "123";

• int num = std::stoi(numStr);

• 对于浮点数,可以使用std::stof(转换为float)、std::stod(转换为double)等函数。

• 数字转字符串

• 可以使用std::to_string函数将数字转换为字符串。例如:

• int num = 123;

• std::string numStr = std::to_string(num);

4. 原始字符串字面量(C++11引入)

• C++11提供了原始字符串字面量的支持,这对于处理包含特殊字符(如反斜杠、双引号等)的字符串非常有用。原始字符串字面量以R"(开始,以)"结束。例如:

• std::string rawStr = R"(This is a "raw" string \ with special characters.)";

• 在这个字符串中,特殊字符不需要进行转义处理,与普通字符串字面量相比,更方便地表示复杂的字符串内容。

5. 字符串的拼接效率优化

• 当使用+运算符多次拼接std::string时,每次拼接都会创建一个新的临时对象,这可能会导致性能问题。为了提高效率,可以使用std::ostringstream。

• 例如:

• #include <sstream>

• std::ostringstream oss;

• oss << "Hello";

• oss << " World";

• std::string result = oss.str();

6. 自定义字符串类(进阶概念)

• 在C++中,可以根据需求自定义字符串类。需要考虑内存管理、字符存储方式(如动态数组)、字符串操作方法(如连接、查找、比较等)的实现。

• 例如,一个简单的自定义字符串类的部分实现:
class MyString {
private:
    char* data;
    size_t length;
public:
    MyString();
    MyString(const char* str);
    ~MyString();
    MyString operator+(const MyString& other);
    bool operator==(const MyString& other);
    // 其他方法定义...
};


7. C++20中的字符串新特性(如果适用)

• C++20引入了一些新的字符串相关特性。例如,std::format函数提供了更强大和类型安全的格式化功能,类似于Python中的格式化字符串。

• int num = 42;

• std::string formatted = std::format("The number is {}", num);

• 它还支持更复杂的格式化选项,如格式化对齐、填充等。

8. 字符串与文件操作

• 在C++中,std::string经常与文件操作结合使用。例如,使用std::ifstream读取文件内容到std::string对象。
#include <iostream>
#include <fstream>
#include <sstream>
int main() {
    std::ifstream file("test.txt");
    std::stringstream buffer;
    buffer << file.rdbuf();
    std::string fileContent = buffer.str();
    std::cout << fileContent << std::endl;
    return 0;
}
• 同样,也可以使用std::ofstream将std::string内容写入文件。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/pingmian/54972.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

FPGA IP 和 开源 HDL 一般去哪找?

在FPGA开发的世界中&#xff0c;IP核和HDL模块是构建复杂数字系统的基石。它们如同乐高积木&#xff0c;让开发者能够快速搭建和重用经过验证的电路功能。但你是否曾感到迷茫&#xff0c;不知道从哪里寻找这些宝贵的资源&#xff1f;本文将为你揭开寻找FPGA IP核和HDL模块资源的…

Tesla T4 P2P测试

Tesla T4 P2P测试 一.测试环境二.测试步骤1.获取设备信息2.查看PCIE拓扑结构3.选择9B、9E这二张4.查看逻辑设备ID5.设置环境变量(需要用逻辑设备ID,通过UUID跟smi看到的物理ID关联)6.不同地址的原子操作2.P2P与非P2P的性能差异3.GPU带宽测试 Tesla T4 P2P测试 通过物理ID找到逻…

2024PT展,现场精华

9月25-27日&#xff0c;2024年国际信息通信展&#xff08;简称PT展&#xff09;在北京国家会议中心召开。 小枣君去了现场&#xff0c;也拍了一些照片&#xff0c;特此分享给大家。 会场离“奥林匹克公园”地铁站很近&#xff1a; Logo设计得还是挺好看的&#xff1a; 熟悉的场…

一区黏菌算法+双向深度学习+注意力机制!SMA-BiTCN-BiGRU-Attention黏菌算法优化双向时间卷积双向门控循环单元融合注意力机制多变量回归预测

一区黏菌算法双向深度学习注意力机制&#xff01;SMA-BiTCN-BiGRU-Attention黏菌算法优化双向时间卷积双向门控循环单元融合注意力机制多变量回归预测 目录 一区黏菌算法双向深度学习注意力机制&#xff01;SMA-BiTCN-BiGRU-Attention黏菌算法优化双向时间卷积双向门控循环单元…

探索机器人快换盘技术的未来之路:智能化与协作的革新

在当今快速发展的科技时代&#xff0c;机器人已成为众多领域不可或缺的得力助手。其中&#xff0c;机器人快换盘技术作为提升机器人灵活性和应用广度的重要技术&#xff0c;正经历着前所未有的变革与创新。下面请随我们一起深入探讨这一技术的未来发展趋势。 一、人工智能&…

<<迷雾>> 第 4 章 电子计算机发明的前夜 示例电路

莫尔斯电报示意图 info::操作说明 鼠标单击开关切换开合状态 通电后, 线圈产生磁力从而将铁片开关(衔铁臂)吸引下来 primary::在线交互操作链接 https://cc.xiaogd.net/?startCircuitLinkhttps://book.xiaogd.net/cyjsjdmw-examples/assets/circuit/cyjsjdmw-ch04-01-morse-te…

Shopline对接需要注意的问题

Shopline对接是一项复杂而细致的工作&#xff0c;为了确保对接的顺利进行&#xff0c;并保证系统的稳定性和可靠性&#xff0c;需要注意以下几个方面。 1.API文档的详细阅读 功能理解&#xff1a; 仔细阅读Shopline提供的API文档&#xff0c;全面了解每个接口的功能、参数、返…

初始docker以及docker的基本使用!!!

文章目录 虚拟化技术Docker/podman 命令通用命令查看docker 当前版本管理docker运行 镜像操作[image]列出本地所有镜像拉取镜像删除镜像把docker中的镜像打包成文件把镜像文件加载到docker中上传镜像 容器操作[container]创建容器docker run的参数选项列出所有容器启动容器停止…

安防区域保护:无线电干扰设备技术详解

在安防区域保护中&#xff0c;无线电干扰设备技术扮演着重要角色&#xff0c;它主要用于通过发射特定频率的无线电波来干扰无人机或其他无线电设备的通信链路、导航信号或控制信号&#xff0c;以达到削弱、阻断甚至控制这些设备运行的目的。以下是对无线电干扰设备技术的详细解…

【GAN】生成对抗网络Generative Adversarial Networks理解摘要

【Pytorch】生成对抗网络实战_pytorch生成对抗网络-CSDN博客 【损失函数】KL散度与交叉熵理解-CSDN博客 [1406.2661] Generative Adversarial Networks (arxiv.org) GAN本质是对抗或者说竞争&#xff0c;通过生成器和鉴别器的竞争获取有效地结果&#xff0c;换句话说&#xff0…

每日一练 2024.9.29(2)

目录 解题思路与代码实现 题目分析 一、解题策略 关键步骤&#xff1a; 二、代码实现 三、代码解析 四、复杂度分析 五、运行示例 示例1&#xff1a; 示例2&#xff1a; 六、总结 解题思路与代码实现 题目分析 这道题目要求我们找到字符串列表 strs 中的相似字符组…

C++——vector

1.简介 2.成员函数 2.1构造函数 void test_vector1() {//1.无参构造vector<int> v1;cout << v1.capacity() << endl;//2.传参构造vector<int> v2(10,1);//3.迭代器构造vector<int> v3(v2.begin(), v2.end());//也可以使用其它容器的迭代器区间来…

scrapy快速上手

安装 除了scrapy本身还要安装两个库 pip install scrapy pip install pywin32 pip install wheel 创建项目 在要创建项目的地方打开powershell scrapy startproject 项目名 我们得到这样的项目结构&#xff0c;功能如下 scrapy.cfg 项目的主配置信息 …

LeetCode[中等] 17. 电话号码的字母组合

给定一个仅包含数字 2-9 的字符串&#xff0c;返回所有它能表示的字母组合。答案可以按 任意顺序 返回。 给出数字到字母的映射如下&#xff08;与电话按键相同&#xff09;。注意 1 不对应任何字母。 思路 回溯法 log&#xff1a;当前结果数组&#xff1b;level&#xff1a…

第五届计算机科学与管理科技国际学术会议(ICCSMT 2024)

梁哲&#xff0c;同济大学长聘特聘教授&#xff0c;国家杰青、首届国家杰青延续项目获得者、上海市曙光学者、上海市优秀学术带头人。本科毕业于新加坡国立大计算机工程系、硕士毕业于新加坡国立大学工业与系统工程系、博士毕业于美国新泽西州立大学工业工程系。理论研究主要集…

修改Opcenter EXFN 页面超时时间(Adjust UI Session Extend Token)

如果你想修改Opcenter EXFN中页面Session的超时时间&#xff0c;你可以按照如下步骤修改SessionAge 这个参数&#xff1a; 管理员运行CMD执行以下命令 umconf -getconfig -file C:\temp\config.json如果第2步有报错&#xff0c;则执行步骤4;如果没有报错则执行第5步如果第2步…

探索光耦:光耦在电脑电源中的应用及其重要性

随着计算机技术的飞速发展&#xff0c;电脑已成为现代生活和工作中不可或缺的工具。无论是日常办公、游戏娱乐还是复杂的图像处理&#xff0c;电脑电源的稳定性和安全性都至关重要。作为电脑电源的核心部件之一&#xff0c;光耦&#xff08;光电耦合器&#xff09;在提升电源性…

JavaScript网页设计案例:互动式简历网站

JavaScript网页设计案例&#xff1a;互动式简历网站 在现代网页设计中&#xff0c;JavaScript 是实现交互和动态效果的关键技术。本文将通过一个完整的案例&#xff0c;展示如何使用 JavaScript 构建一个交互式的个人简历网页。本文不仅会涵盖 HTML 和 CSS 的使用&#xff0c;…

android和ios双端应用性能的测试工具

1.工具介绍 基于日常工作的需要&#xff0c;开发了一款新的android和ios端应用性能测试工具&#xff0c;本工具在数据测试方面与所流行的工具没有区别。欢迎下载使用体验。 本工具为筋斗云&#xff0c;工具说明 本工具无侵入&#xff0c;不需要root&#xff0c;低延迟…

(十七)、Mac 安装k8s

文章目录 1、Enable Kubernetes2、查看k8s运行状态3、启用 kubernetes-dashboard3.1、如果启动成功&#xff0c;可以在浏览器访问3.2、如果没有跳转&#xff0c;需要单独安装 kubernetes-dashboard3.2.1、方式一&#xff1a;一步到位3.2.2、方式二&#xff1a;逐步进行 1、Enab…