Tag: string

找出无序的anagramic对子串的数量

我想解决以下问题: https : //www.hackerrank.com/challenges/sherlock-and-anagrams 这是我的代码 import java.util.*; public class Solution { public static boolean check(String s1,String s2) { int [] count1 = new int[26]; for( int i = 0; i < s1.length(); i++ ) { char ch1 = s1.charAt(i); count1[ch1-'a']++; } int [] count2 = new int[26]; for( int i = 0; i < s2.length(); […]

String.replace()返回不需要的字符串

我正在处理一段代码,我要将字符串拆分成单个部分并替换它们。 我的代码的基本逻辑流程是,有一个包含公式的字符串。 LHS下面的数字,即1,2和3是不同对象的ID。 一旦我拆分它们,我就会使用这些ID,获取相应的值并将下面String中的ID替换为其各自的值。 我的字符串如下 – String str = “(1+2+3)>100”; 我用以下代码分割字符串 – String[] arraySplit = str.split(“\\>|\\<|\\="); String[] finalArray = arraySplit[0].split("\\(|\\)|\\+|\\-|\\*"); arraySplit[0] = arraySplit[0].replace(id,reading); 因此,在分割字符串之后,我将用值替换字符串,即字符串现在是, (30+45+50)>100 ,其中30,45和50是相应的值。 (然后在SpEL中使用此字符串来评估公式) 在用值替换字符串时,我得到以下响应 – 初始字符串 – (1+2+3)>100其中1,2和3是id。 ID的各自值分别为30.0,45.0和50.0。 使用for循环替换值后,字符串是 – (50.00.0+45.0+50.0)>100 。 第一个值很奇怪。 原因是在第三次迭代中,字符串看起来像这样 – (30.0 + 45.0 + 3)> 100。 因此,在第三次迭代中替换字符串时,它将所有3的实例替换为50.0,从而产生上述字符串。 所以显然使用String.replace()在这里不是更好的选择。 那么在这种情况下我应该使用什么方法呢? 我也在使用SpEL,所以如果使用SpEL有更好的解决方案,那么它也很好。 这里, (1+2+3)>100只是一个例子。 圆括号是公式的一部分,字符串也可以是((1+2+3)*(5-2))>100 。 或者甚至可以改变公式的语法,目前公式是这样的 […]

如何转换int以便返回字符串,这就是我们说int的方式

我遇到了这个面试问题,面试官要求编写一个函数,它将取一个整数,比如说123,并返回一个字符串,就像人们会说整数一样。在上面的例子中,输出应该是“一百二十三” “。我不知道如何解决这些问题。任何人都可以帮忙解决这个问题吗? 伪代码将是有用的。

JNI – java ArrayList转换为c ++ std :: string *

我试图用C ++中的JNI进行数据转换。 我在使用java的字符串 ArrayList时遇到了麻烦,因为我无法将这样的数据转换为c ++ 向量或std :: string * 。 我想知道如果可能的话,如何在不牺牲太多性能的情况下进行转换。 任何想法,将不胜感激。

番石榴,Files.readLines()和空白区域

我有以下代码使用Guava的Files.readLines()方法: List strings = Lists.newArrayList(); final File file = new File(filePath); if (file.isFile()) { try { strings= Files.readLines(file, Charsets.UTF_8); } catch (IOException ioe) {} } else { // File does not exist } 一旦我有了我的String列表,我想测试一下,看看我正在查看的当前字符串是否在文件中。 String myString = “foo”; if (strings.contains(myString)) { // Do something } 但是,我想使容忍原始文件的代码包含前导或尾随空格(即” foo ” )。 实现这一目标的最优雅方式是什么?

字符串池是在PermGen区域或Heap的Object区域中创建的

这是作者说的 3)字符串池是在Heap的PermGen区域中创建的,垃圾收集可以在perm空间中进行,但依赖于JVM到JVM。 顺便提一下,从JDK 1.7更新,String池被移动到创建对象的堆区域。 它有什么具体原因吗? 我无法在网上找到任何内容。 有什么影响?

Java中的replace()和replaceAll()

以下代码使用Java中String类的replace()方法。 String a = “abc/xyz”; System.out.println(a.replace(“/”, “\\”)); /在给定的String中, a被替换为\ 。 如果我们使用replaceAll()方法,如下所示是同样的错误。 System.out.println(a.replaceAll(“/”, “\\”)); 它会导致抛出exceptionjava.lang.StringIndexOutOfBoundsException 。 它需要两个额外的反斜杠\ ,如下所示,因为replaceAll()使用正则表达式,而不是replace()方法的情况。 System.out.println(a.replaceAll(“/”, “\\\\”)); 唯一的问题是为什么这个方法只使用两个斜杠,如a.replaceAll(“/”, “\\”)抛出java.lang.StringIndexOutOfBoundsException ? 另一方面, split()方法最初发出一个waring Invalid regular expression: Unexpected internal error (我正在使用NetBeans 6.9.1)。 String b=”abc\\xyz”; System.out.println(b.split(“\\”)[0]+b.split(“\\”)[1]); //Issues a warning as specified. 尝试运行此操作会导致抛出exceptionjava.util.regex.PatternSyntaxException 。 因为它使用像replaceAll()这样的正则表达式,所以它需要四个反斜杠。 System.out.println(b.split(“\\\\”)[0]+b.split(“\\\\”)[1]); 为什么a.replaceAll(“/”, “\\\\”); 如前面的情况一样,即使它的模式无效,也不会发出这样的警告或运行时exception?

如何将字符串拆分为shell之类的参数?

这是一个参数解析器列表,但它们接受字符串数组。 现在,我有一个字符串 -s -d “String with space” -d “string with \” escape \n the next line” 我想将字符串拆分为 -s -d String with space -d string with ” escape the next line (This is one string with \n) 有没有工具可以做到这一点? 也可以看看 分串上的空间-除了-如果引号间,即性治疗问候世界-作为 含有分裂-A-字符串的命令行参数-进入-一个串入-java的 EDTIED 张贴作为答案。

C ++ std :: string到jstring,长度固定

我正在尝试将C ++ std :: string转换为jstring并返回它。 这很容易 JNIEnv*->NewStringUTF(stdString.c_str()) 但问题是我正在转换的字符串几乎随机散布了空字符。 这是c_str()的问题,但不是std::string 。 NewStringUTF只捕获完整std::string 。 有一些希望, std::string有一个length()函数,它获取全长,忽略有问题的char * \0字符。 有一个单独的函数NewString ,它接受一个jchar *和一个jsize *,所以看起来很有希望,但我无法将std :: string正确转换为jchar *。 我试过把它变成一个字节数组,但我可能做得不对。 我有进一步的问题,将length()给出的int转换为jsize,这是NewString调用所需要的。 我已经使用vector byteArray(stdString.begin(), stdString.end())完成了一些工作,但这并没有让我走得太远,可能是因为这弄乱了原始字符串是什么。 这是我的基本入门函数,它使用没有空字符的字符串: jstring StringToJString(JNIEnv * env, const std::string & nativeString) { return env->NewStringUTF(nativeString.c_str()); } 作为旁注,此函数在JNI包装器文件中用于返回对象的std::string 。 感谢您的帮助或信息来源!

扫描仪只读取第一个单词而不是行

在我当前的程序中,一种方法要求用户输入产品的描述作为String输入。 但是,当我稍后尝试打印出这些信息时,只显示String的第一个单词。 可能是什么原因造成的? 我的方法如下: void setDescription(Product aProduct) { Scanner input = new Scanner(System.in); System.out.print(“Describe the product: “); String productDescription = input.next(); aProduct.description = productDescription; } 因此,如果用户输入是“带有橙味的苏打汽水”,则System.out.print将仅产生“Sparkling”。 任何帮助将不胜感激!