我想遍历String中的每个字符,并将String的每个字符作为String传递给另一个函数.
String s = "abcdefg";
for(int i = 0; i < s.length(); i++){
newFunction(s.substring(i, i+1));}
Run Code Online (Sandbox Code Playgroud)
要么
String s = "abcdefg";
for(int i = 0; i < s.length(); i++){
newFunction(Character.toString(s.charAt(i)));}
Run Code Online (Sandbox Code Playgroud)
最终结果必须是String.那么任何更快或更高效的想法?
我试图使用sed从变量中删除子字符串,如下所示:
PRINT_THIS="`echo "$fullpath" | sed 's/${rootpath}//' -`"
Run Code Online (Sandbox Code Playgroud)
哪里
fullpath="/media/some path/dir/helloworld/src"
rootpath=/media/some path/dir
Run Code Online (Sandbox Code Playgroud)
我想像这样回应其余的完整路径(我在整堆目录中使用它,所以我需要将它存储在变量中并自动执行
echo "helloworld/src"
Run Code Online (Sandbox Code Playgroud)
使用变量就可以了
echo "Directory: $PRINT_THIS"
Run Code Online (Sandbox Code Playgroud)
问题是,我无法获取sed删除子字符串,我做错了什么?谢谢
我有一个具有特定模式的字符串:
23;chair,red [$3]
Run Code Online (Sandbox Code Playgroud)
即,一个数字后跟一个分号,然后是一个名称,后跟一个左方括号.
假设分号;始终存在且左方括号[始终存在于字符串中,如何在SQL Server查询中(和不包括);和[SQL Server查询之间提取文本?谢谢.
这可能是一个简单的问题,但不幸的是我无法得到我想要的结果......
说,我有以下几行:
"Wouldn't It Be Nice" (B. Wilson/Asher/Love)
Run Code Online (Sandbox Code Playgroud)
我必须寻找这种模式:
" (<any string>)
Run Code Online (Sandbox Code Playgroud)
为了检索:
B. Wilson/Asher/Love
Run Code Online (Sandbox Code Playgroud)
我尝试了类似的东西,"" (([^))]*))但似乎没有用.另外,我想使用Match.Submatches(0)这样可能会使事情复杂化,因为它依赖括号......
(我在JavaScript的上下文中写这个,但是会接受任何语言的算法正确答案)
如何在字符串数组中找到每个元素的最短子字符串,其中子字符串不包含在任何其他元素中,忽略大小写?
假设我有一个输入数组,例如:
var names = ["Anne", "Anthony", "LouAnn", "Kant", "Louise", "ark"];
Run Code Online (Sandbox Code Playgroud)
输出应该是这样的:
var uniqueNames = ["ne", "h", "ua", "ka", "i", "r"];
Run Code Online (Sandbox Code Playgroud)
出于我的目的,您可以安全地假设没有元素将完全包含在另一个元素中.
我的想法:
似乎人们可能会蛮力这样做,其方式如下:
var names = ["Anne", "Anthony", "LouAnn", "Kant", "Louise", "ark"];
var uniqueNames = [], nameInd, windowSize, substrInd, substr, otherNameInd, foundMatch;
// For each name
for (nameInd = 0; nameInd < names.length; nameInd++)
{
var name = names[nameInd];
// For each possible substring length
windowLoop:
for (windowSize = 1; windowSize <= name.length; windowSize++)
{
// For each …Run Code Online (Sandbox Code Playgroud) 我在这里阅读了很多关于堆栈溢出的帖子比较子字符串搜索的性能(例如Python字符串搜索效率, 这是搜索子字符串的最有效方法吗?, python中的子字符串等等)
我还看了一下包含abstract.c的源代码实现.
据我所知,内置实现是迭代的:python docs
python是否有更多足够的技术来实现查找子字符串:Boyer-Moore算法, Rabin-Karp算法等...... ???
编辑
问题已经扩展: Python:通过嵌入复杂的算法改进子字符串搜索.
我正在寻找一个Pascal等价物(例如)php的substr函数,它的工作原理如下:
$new_string = substr('abcdef', 1, 3); // returns 'bcd'
Run Code Online (Sandbox Code Playgroud)
我已经找到了它,但我总是花费太长时间才这样做,所以我发布了像我这样的其他人的答案,以便能够轻松找到它.
我需要在String中找到最长的非重叠重复子字符串.我有可用字符串的后缀树和后缀数组.
当允许重叠时,答案是微不足道的(后缀树中最深的父节点).
例如对于String ="acaca"
如果允许重叠,则回答是"aca"但是当不允许重叠时,回答是"ac"或"ca".
我只需要算法或高级想法.
PS:我试过,但我在网上找不到明确的答案.
我指的是Sedgewick的书"Algorithms"(第4版)中用于子串搜索的Knuth-Morris-Pratt(KMP)算法的概述.
KMP算法在子串搜索中使用基于确定性有限自动机(DFA)的备份.我了解DFA如何输入算法,但我不明白如何构建 DFA,这由以下代码片段完成:
dfa[pat.charAt(0)][0] = 1;
for (int X = 0; j = 1; j< M; j++) {
for (int c = 0; c < R; c++) {
dfa[c][j] = dfa[c][X];
}
dfa[pat.charAt(j)][j] = j+1;
X = dfa[pat.charAt(j)][X];
}
Run Code Online (Sandbox Code Playgroud)
M模式的长度pat和R字母的大小在哪里.该charAt()函数返回相应位置的字符的整数值.
有人能解释这段代码构造dfa的方式吗?我迷失在内部for循环的实际直觉意义上.
在C中,如果我有:
char *reg = "[R5]";
Run Code Online (Sandbox Code Playgroud)
而且我要
char *reg_alt = "R5" (相同的东西,但没有括号),我该怎么做?
我试过了
*char reg_alt = reg[1:2];
Run Code Online (Sandbox Code Playgroud)
但这不起作用.
substring ×10
algorithm ×4
string ×4
c ×2
performance ×2
arrays ×1
bash ×1
character ×1
dfa ×1
java ×1
pascal ×1
python ×1
regex ×1
sed ×1
sql-server ×1
substr ×1
suffix-array ×1
suffix-tree ×1
unique ×1
vba ×1