- gf25036 的博客
《章鱼&算法 关于字符串》
- @ 2026-5-9 20:00:14
推荐一很好用的字符串函数
我竟然今天才知道,这之前讲过,没好好听课,要好好听课了。
好了,这个就是substr。
介绍
substr名“子字符串”,是(substring)的缩写,它的主要作用是:从一个字符串中,提取出从指定位置开始、指定长度的一段字符,而不会修改原来的字符串。
基本语法
通常格式为:substr(起始位置, 长度)
起始位置:从哪个字符开始取。
大多数语言中,0 表示第一个字符,1 表示第二个(但比如PHP中字符串起始位置是0)。
如果为负数,通常表示从字符串尾部开始倒数。
长度:需要提取的字符个数。如果不写,通常表示一直取到字符串末尾。
简单例子
假设字符串是 "Hello, World!"
substr(0, 5) → 返回 "Hello" (从第1个字符取5个长度)
substr(7, 5) → 返回 "World"
substr(7) → 返回 "World!" (省略长度,取到末尾)
substr(-6, 5) → 返回 "World" (从倒数第6个字符开始取5个)
例子:
HD2025M1. 字符串就可以用substr;
代码:
#include <bits/stdc++.h>
using namespace std;
int n,len;
string s;
int main(){
cin>>n;
cin>>s;
for(int i=n/2;i>=1;i--){
string a=s.substr(0,i);
string b=s.substr(i,i);
if(a==b){
cout<<n-i+1;
return 0;
}
}
cout<<n;
return 0;
}
注意区分:substr() 和 substring()
substr(start, length)
提取的长度 (字符个数) 比如 substr(2, 3) 从索引2开始取3个字符
substring(start, end)
结束的索引位置 (不包含该位置) 比如 substring(2, 5) 从索引2取到索引4(索引5不取)