PYTHON QN:仅使用一个循环,如何设计一种算法来计算以字符开头A并以字符结尾的子字符串的数量X?例如,给定输入字符串,CAXAAYXZA有四个以 开头A和结尾的子字符串X,即:AX、AXAAYX、AAYX和AYX。
例如:
>>>count_substring('CAXAAYXZA')
4
Run Code Online (Sandbox Code Playgroud) 我必须截断表上 Guid 的前几位数字。是否可以仅使用 SQL 脚本来完成此操作?或者我必须以编程方式完成?
谢谢!
假设我在 R 中使用list.files()获得了下一个向量:
paths <- c("/home/user/myfolder/ERA/amsterdam/amsterdam1.nc", "/home/user/myfolder/ERA/amsterdam/amsterdam2.nc",
"/home/user/myfolder/CLMcom/HadCruz/run1/paris/paris1.nc", "/home/user/myfolder/CLMcom/HadCruz/run1/paris/paris2.nc",
"/home/user/myfolder/CNRM/CLMcom/rcp85/run1/helsinki/helsinki1.nc")
nchar(paths)
[1] 47 47 55 55 63
Run Code Online (Sandbox Code Playgroud)
如您所见,矢量路径确实具有不同大小的对象。
我想从路径中获取包含所有对象但没有内部文件名的新向量,例如:
> new_paths
[1] "/home/user/myfolder/ERA/amsterdam/"
"/home/user/myfolder/ERA/amsterdam/"
[3] "/home/user/myfolder/CLMcom/HadCruz/run1/paris/"
"/home/user/myfolder/CLMcom/HadCruz/run1/paris/"
[5] "/home/user/myfolder/CNRM/CLMcom/rcp85/run1/helsinki/"
Run Code Online (Sandbox Code Playgroud)
我需要这个,因为我想创建一个循环,其中对于向量 new_paths中的每个i,我将使用system运行一个终端命令
我知道strsplit有可能,但是,我不是在 R 中操作文件名的专家。有人知道这种可能性吗?
这是我写的示例代码,
public static void main(String []args){
String inputString = "apple";
char a = inputString[2]; //one
System.out.println(inputString[2]); //two
}
Run Code Online (Sandbox Code Playgroud)
一和二都给我一个错误,说Array type expected; found: 'java.lang.String'我做错了什么?如何访问字符串中的特定索引?
所以我一直在研究子字符串搜索算法,并发现大多数算法(如 kmp 和 rabin-karp 算法)在进行一些字符串匹配之前需要额外的时间复杂度来进行预处理时间。这样做有什么好处吗?为什么他们不立即跳到字符串匹配,以便大 O 时间复杂度不会下降到 O(m+n)?我尝试通过简单地跳过预处理时间来创建一个我认为是 O(n) 的子串算法(如果我错了,请纠正我)。我想知道为什么人们不这样做,请参考下面的 C 代码。
int search(char hay[], char needle[], int hayLen, int needleLen){
int found;
int i = 0;
while (i < (hayLen - needleLen + 1)){
if (hay[i] == needle[0]){
found = 1;
for (int j=0; j<needleLen; j++){
if (hay[i] != needle[j]){
found = 0;
break;
}
i++;
}
if (found)
return i - needleLen;
}
else
i++;
}
return -1;
}
Run Code Online (Sandbox Code Playgroud)
编辑:
删除了 strlen 函数以避免任何不需要的时间复杂性
如何从字符串中删除字母并只留下最后 3 个字符
输入:
foobar
Run Code Online (Sandbox Code Playgroud)
输出:
bar
Run Code Online (Sandbox Code Playgroud)
我试过:
string.Concat("foobar".Reverse().Skip(3).Reverse());
Run Code Online (Sandbox Code Playgroud)
但这删除了最后 3 行并没有保留它们
我很难检查 python 列表中的所有字符串是否是另一个 python 列表中任何字符串的子集。
示例:我想检查的每个字符串(所有字符串)list1是否至少包含在其中的一个字符串中list2,如果是,请执行某些操作。
list1 = ['tomato', 'onions','egg']
list2 = ['Two tomatos', 'two onions','two eggs','salsa']
Run Code Online (Sandbox Code Playgroud)
例如,在这个例子中,它会返回True.
如果字符串长于设定值,我正在尝试使用 perl 截断选择输入选项中的字符串,但我无法使其正常工作。
my $value = defined $option->{value} ? $option->{value} : '';
my $maxValueLength = 50;
if ($value.length > $maxValueLength) {
$value = substr $value, 0, $maxValueLength + '...';
}
Run Code Online (Sandbox Code Playgroud) 我正在使用一个看起来像这样的大数据框:
id time1 time2 data
0 id1 06:24:00 06:24:00 A
1 id2 07:24:00 07:24:00 A
2 id3 08:24:00 08:24:00 B
Run Code Online (Sandbox Code Playgroud)
我想选择具有所有行time1和/或time2在23:xx:yy格式。
我尝试使用以下代码,但速度非常慢,因此我正在寻找更有效的方法:
list_ = list()
for idx in df.index:
if ('23' in df.time1[:2]) | ('23' in df.time2[:2]):
list_.append(df.loc[df.index == idx]) ###--- Here I wanted to get a list of indexes so I could do a simple df.loc[] afterward
Run Code Online (Sandbox Code Playgroud)
我还尝试了以下代码,但所有代码都引发了错误:
df.loc[df.time1[:2] == '23']
df.loc['23' in df.time1[:2]]
df[df.time1[:2].str.contains('23')]
> IndexingError: Unalignable boolean Series provided as indexer …Run Code Online (Sandbox Code Playgroud) 我想知道如何构建一个非常简单的标记器。给定字典 d(在本例中为列表)和句子 s,我想返回该句子的所有可能标记(=单词)。这是我尝试过的:
l = ["the","snow","ball","snowball","is","cold"]
sentence = "thesnowballisverycold"
def subs(string, ret=['']):
if len(string) == 0:
return ret
head, tail = string[0], string[1:]
ret = ret + list(map(lambda x: x+head, ret))
return subs(tail, ret)
print((list(set(subs(sentence))&set(l))))
Run Code Online (Sandbox Code Playgroud)
但这会返回:
["snow","ball","cold","is","snowball","the"]
Run Code Online (Sandbox Code Playgroud)
我可以比较子字符串,但必须有更好的方法来做到这一点,对吗?我想要的是:
["the","snowball","is","cold"]
Run Code Online (Sandbox Code Playgroud)