当前位置: 首页 > 知识库问答 >
问题:

交替编码训练方案

葛海阳
2023-03-14

我在为Java编写代码时试图解决以下问题:http://codingbat.com/prob/p121193

给定一个字符串,返回字符串中出现的数字之和,忽略所有其他字符。数字是一行中一个或多个数字字符的序列。(注意:Character.isDigit(char)测试字符是否为字符“0”、“1”、“1”之一。)9'. 整数parseInt(字符串)将字符串转换为整数(“abc123xyz”)→ 123个数字(“aa11b33”)→ 44个数字(“7 11”)→ 十八

下面是我的解决方案

public int sumNumbers(String str) {
  final int len=str.length();

  int[] numbers=new int[len];
  int count=0;
  String temp="";
  int sum=0;

  for(int i=0;i<len;i++)
  {
     if(Character.isDigit(str.charAt(i)))
     {
        temp=temp+str.substring(i, i+1);

        if(i==len-1)
        {
          numbers[count]=Integer.parseInt(temp);
          break;
         }
        if(Character.isDigit(str.charAt(i+1)))
        {
           continue;
        }
        else
        {
          numbers[count]=Integer.parseInt(temp);
          count++;
          temp="";
        } 
     }   

   }
   for(int j=0;j<numbers.length;j++)
   {
      sum=sum+numbers[j];
    }
    return sum;  

}

这是一个简单的问题,请使用正则表达式或其他方法提供任何其他有效答案,请不要使用集合框架中的任何内容。

共有3个答案

佴英奕
2023-03-14

这是我写的。我不知道它看起来好还是不好:)

    public int sumNumbers(String str) {
String justLetter = "";
int answer = 0; 
int number = 0; 
int factor = 1; 

for (int a = str.length()-1; a >= 0 ; a--) {

justLetter = justLetter + str.charAt(a);

if (Character.isDigit(justLetter.charAt(0))) {
number = Integer.parseInt(justLetter) * factor; 
factor = factor * 10; 
answer = answer + number;
}

else {
factor = 1;
}
justLetter = "";
}
return answer;
}
洪光霁
2023-03-14
public int sumNumbers(String str) {
    int sum = 0;
    StringTokenizer st = new StringTokenizer(str,"$!;Cabcdefghijklmnopqrstuvwxyz ");
    while (st.hasMoreTokens()) {
         sum += Integer.parseInt(st.nextToken());
    }
    return sum;
}

我很久以前写过它,现在想知道当年写这段代码时我是怎么想的。

钱修雅
2023-03-14

这是我的解决办法。它和你的相似。

public int sumNumbers(String str) {
    int sPos = -1;
    int ePos = -1;
    int sum = 0;

    for (int i = 0; i < str.length(); i++) {
        char c = str.charAt(i);
        if (Character.isDigit(c)) {
            if (sPos < 0) {
                sPos = i;
                ePos = i;
            } else {
                ePos = i;
            }
        } else {
            sum = add(str, sum, sPos, ePos);
            sPos = -1;
        }
    }

    sum = add(str, sum, sPos, ePos);

    return sum;
}

private int add(String str, int sum, int sPos, int ePos) {
    if (sPos >= 0) {
        sum += Integer.parseInt(str.substring(sPos, ePos + 1));
    }
    return sum;
}
 类似资料:
  • 本文向大家介绍TensorFlow实现随机训练和批量训练的方法,包括了TensorFlow实现随机训练和批量训练的方法的使用技巧和注意事项,需要的朋友参考一下 TensorFlow更新模型变量。它能一次操作一个数据点,也可以一次操作大量数据。一个训练例子上的操作可能导致比较“古怪”的学习过程,但使用大批量的训练会造成计算成本昂贵。到底选用哪种训练类型对机器学习算法的收敛非常关键。 为了Tensor

  • 利用 Polar 应用程式、Polar Flow 应用程式以及 Polar Flow 网络服务获得有关您的训练的即时分析,深入了解您的训练。 M600 上的训练总结 在每次训练后,您将在您的手表上收到您的即时训练总结。 总结中显示的信息取决于运动内容。可提供的细节包括: 时间长度:训练时长 距离(如适用于您的运动):指训练中已完成的距离。 平均心率:指训练期间您的平均心率。 最大心率:指训练期间您

  • 训练视图 浏览训练视图 上下滑动屏幕。 或 将手腕向内再向外轻快移动。 观看如何在训练期间使用 Polar 应用程式的相关视频教程。 您在训练视图上看到的信息取决于您对所选的运动内容的编辑。您可以在 Polar Flow 应用程式或 Polar Flow 网络服务中对每项运动内容进行设置。 例如,训练视图可提供以下信息: 您的当前心率 心率 ZonePointer 训练时长 训练期间到目前为止完成

  • 尝试一周,能改变一些旧习 一个一个练,反复的使用即可 不求多,以下练熟悉即可 practice makes prefect~ 放弃鼠标 全键盘和触摸板,你可以么? 从熟悉快捷键开始 全屏 专心写代码,减少干扰 ctrl + command + f 放大到全屏 设置Workbench主菜单快捷键,快速切换 设置Workbench主菜单快捷键,然后就有了command + 1到4的快捷键,快速切换,效

  • 您可以在 Polar Flow 网络服务或 Polar Flow 应用程式中规划您的训练并创建个人训练目标。 使用季度规划工具,创建训练计划 Flow 网络服务中的 Season Planner (季度规划工具)是度身打造年度训练计划的理想工具。无论训练目标如何,Polar Flow 都可以帮助您创建达成的综合计划。您可以在 Polar Flow 网络服务中的程序选项卡中找到季度规划工具。 Pol

  • 训练效益为您提供每次训练效果的文字反馈信息,帮您更好地了解训练的有效性。您可以在 Flow 应用程式与 Flow 网络服务上查看反馈信息。要获得反馈信息,您需要在心率区中一共至少训练 10 分钟。 训练效益反馈信息是基于心率区。它反映了您在每个心率区花费的时间与消耗的卡路里数。 下表列出了不同训练效益选项的描述。 评估信息 效益 Maximum training+(最强训练+) 非常棒的训练!您的