LeetCode-13-java

问题1: java switch语句

switch(expression){
    case value :
       //语句
       break; //可选
    case value :
       //语句
       break; //可选
    //你可以有任意数量的case语句
    default : //可选
       //语句
}

问题二:String类型和char类型的转换

String转换为char


1. 使用String.charAt(index)(返回值为char)可以得到String中某一指定位置的char。
2. 使用String.toCharArray()(返回值为char[])可以得到将包含整个String的char数组。这样我们就能够使用从0开始的位置索引来访问string中的任意位置的元素。

 

char转换为String

1. String s = String.valueOf('c'); //效率最高的方法

2. String s = String.valueOf(new char[]{'c'}); //将一个char数组转换成String

3. String s = Character.toString('c');

4. String s = new Character('c').toString();

5. String s = "" + 'c';
// 虽然这个方法很简单,但这是效率最低的方法
// Java中的String Object的值实际上是不可变的,是一个final的变量。
// 所以我们每次对String做出任何改变,都是初始化了一个全新的String Object并将原来的变量指向了这个新String。
// 而Java对使用+运算符处理String相加进行了方法重载。
// 字符串直接相加连接实际上调用了如下方法:
// new StringBuilder().append("").append('c').toString();

6. String s = new String(new char[]{'c'});

 

 

题解:

class Solution {
    public int romanToInt(String s) {
        int len = s.length();
        char[] tem = s.toCharArray();
        int sum = 0;

        String pri = "I, V, X, L, C, D, M";
       

        for (int i = 0; i < len; i++) {

            switch (tem[i]){
                case 'I':
                    if ((i+1) != len && tem[i+1] == 'V'){
                        sum += 4;
                        i++;
                    }else if ((i+1) != len && tem[i + 1] == 'X'){
                        sum += 9;
                        i++;
                    }else {
                        sum += 1;
                    }
                    break;
                case 'v':
                    sum += 5;
                    break;
                case 'x':
                    if ((i+1) != len && tem[i+1] == 'L'){
                        sum += 40;
                        i++;
                    }else if ((i+1) != len && tem[i + 1] == 'C'){
                        sum += 90;
                        i++;
                    }else {
                        sum += 10;
                    }
                    break;
                case 'L':
                    sum += 50;
                    break;
                case 'C':
                    if ((i+1) != len && tem[i+1] == 'D'){
                        sum += 400;
                        i++;
                    }else if ((i+1) != len && tem[i + 1] == 'M'){
                        sum += 900;
                        i++;
                    }else {
                        sum += 100;
                    }
                    break;
                case 'D':
                    sum += 500;
                    break;
                case 'M':
                    sum += 1000;
                    break;
            }

        }
        return sum; 
    }
}

思路:

      switch + if 进行判断,然后特殊情况进行超前的检索,注意不要越界。

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值