Java 如何比较两个char*变量

Java 如何比较两个char*变量,java,c,algorithm,Java,C,Algorithm,假设我们有以下方法(在c代码中): 我的问题是,如果文本和模式是char,如何比较它们?这个方法就像一个子字符串问题,但我有点困惑,我能用char这样的代码来写吗? if(text[i]==pattern[i])? 我对java中的这个算法很感兴趣 如何在java中实现这一点 R = malloc((k+1) * sizeof *R); 请帮我用java翻译这段代码 我们有两个字符串文本? 比如“我喜欢电脑,它很重要” 还有拍拍字符串“电脑很好”? 有人能解释一下我们用什么来代替char吗?你

假设我们有以下方法(在c代码中):

我的问题是,如果文本和模式是
char
,如何比较它们?这个方法就像一个子字符串问题,但我有点困惑,我能用char这样的代码来写吗?
if(text[i]==pattern[i])
? 我对java中的这个算法很感兴趣 如何在java中实现这一点

R = malloc((k+1) * sizeof *R);
请帮我用java翻译这段代码 我们有两个字符串文本? 比如“我喜欢电脑,它很重要” 还有拍拍字符串“电脑很好”?
有人能解释一下我们用什么来代替char吗?

你可能需要
strcmp()
strpos()
你可能需要
strcmp()
strpos()
我不确定你到底在问什么,但如果你想在
text
中找到
pattern
,那么
str
。或者,如果您只是想比较
text
pattern
,那么
strcmp(text,pattern)
(请注意,当
text
pattern
相等时,它返回
0

根据评论中的讨论进行编辑:如果您想询问如何在Java中实现单个字符的索引,请用(在Java中)
text.charAt(i)
替换C
text[i]
。在C语言中,字符串中的字符可以像数组一样直接编入索引,而在Java中,则需要在中调用正确的方法

编辑2:C代码
const char*
可以在Java中替换为
String


在C中,malloc用于分配内存;在这种情况下,它在数组
R
中为
m+1
元素分配空间。因此,可以删除
位*R
,并且
R=malloc((m+1)*sizeof*R)替换为
boolean[]R=新的boolean[m+1]。当将值赋给数组
R
时,将
1
替换为
true
,将
0
替换为
false
,我不确定你到底在问什么,但如果你想在
文本中找到
模式,那么
strstr(文本,模式)
。或者,如果您只是想比较
text
pattern
,那么
strcmp(text,pattern)
(请注意,当
text
pattern
相等时,它返回
0

根据评论中的讨论进行编辑:如果您想询问如何在Java中实现单个字符的索引,请用(在Java中)
text.charAt(i)
替换C
text[i]
。在C语言中,字符串中的字符可以像数组一样直接编入索引,而在Java中,则需要在中调用正确的方法

编辑2:C代码
const char*
可以在Java中替换为
String


在C中,malloc
用于分配内存;在这种情况下,它在数组
R
中为
m+1
元素分配空间。因此,可以删除
位*R
,并且
R=malloc((m+1)*sizeof*R)替换为
boolean[]R=新的boolean[m+1]。将值赋给数组
R
时,应使用
strncmp()
替换
1
true
false
替换
0

。语法类似于:

int strncmp( const char *str1, const char *str2, size_t count );

这是比较字符串的最好和更安全的方法,但您当然需要知道它们的长度,或者至少知道它们之间的最小长度。

您应该使用
strncmp()
。语法类似于:

int strncmp( const char *str1, const char *str2, size_t count );

这是比较字符串的最好和更安全的方法,但您当然需要知道它们的长度,或者至少知道它们之间的最小长度。

我认为您对
char
char*
之间的区别感到困惑。在C语言中,没有内置的字符串类型。字符串表示为以null结尾的字符数组,这意味着字符串的最后一个字符必须是
\0
,因此
char
是单个字符,而
char*
是指向字符数组的指针,即。E一串。这意味着如果(text[i]==pattern[i])
我想你对
char
char*
之间的区别感到困惑,那么说
就很好了。在C语言中,没有内置的字符串类型。字符串表示为以null结尾的字符数组,这意味着字符串的最后一个字符必须是
\0
,因此
char
是单个字符,而
char*
是指向字符数组的指针,即。E一串。这意味着如果(text[i]==pattern[i])
您可以尝试以下方法,那么说
是非常好的:

  • Google diff match补丁说它 有

  • 而且,似乎,

  • 最后,还有 似乎是一个名为的包,其标题为 高性能模式匹配 Java中的算法

您可以尝试以下方法:

  • Google diff match补丁说它 有

  • 而且,似乎,

  • 最后,还有 似乎是一个名为的包,其标题为 高性能模式匹配 Java中的算法


很难理解你的问题,你能用字符来重新表述吗?子字符串问题,或者我们应该发现,如果文本几乎包含模式,文本和模式不是字符串,它们是图表,它们不是
char
,它们是指向
char
的指针,这就是C中的“字符串”(即以NUL字符结尾的字符数组)。在某种程度上呼应先前的陈述-如果提供了帮助您解决问题的答案,则接受该答案,并对帮助您解决问题的答案进行投票,即使这些答案没有直接解决您的问题,这被认为是一种良好的方式和良好的堆栈溢出形式