旅行商人

描述:

一个旅行商人要去拜访他的客户。他手上有每个客户的地址,如:”432 Main Long Road St. Louisville OH 43071”。通常,邮编的格式由两个大写字母,一个空格和五个单数组成。他手上所有的地址都在一个字符串里并且由逗号隔开,如:
123 Main Street St. Louisville OH 43071,432 Main Long Road St. Louisville OH 43071,786 High Street Pollocksville NY 56432

为了便于查看,他想将这些地址通过邮编来归类。可否帮他写一个方法travel,有两个参数,第一个为r(客户地址的字符串),第二个为zipcode(邮编)。返回的字符串格式为:
zipcode:street and town,street and town,…/house number,house number,…

街道名和街道号的顺序必须一一对应。若地址中不存在所给的邮编,则返回”zipcode:/”

例如:

r = “123 Main Street St. Louisville OH 43071,432 Main Long Road St. Louisville OH 43071,786 High Street Pollocksville NY 56432”

travel(r, “OH 43071”) –> “OH 43071:Main Street St. Louisville,Main Long Road St. Louisville/123,432”

travel(r, “NY 56432”) –> “NY 56432:High Street Pollocksville/786”

travel(r, “NY 5643”) –> “NY 5643:/”

MyCode:

using System;

public class SalesmanTravel  
{
    public static string Travel(string r, string zipcode) 
    {
        if (!r.Contains(zipcode)) return zipcode + ":" + "/";

        string str1 = " ";
        string str2 = " ";
        string[] arr = r.Split(',');

        for (int i = 0; i < arr.Length; i++)
          {
             var arr2 = arr[i].Split(' ');
             string str3 = arr2[arr2.Length - 2] +" "+ arr2[arr2.Length - 1];
             if (str3.Equals(zipcode) && !string.IsNullOrEmpty(zipcode))
             {
               str1 += arr[i].Replace(zipcode, "").Substring(arr[i].IndexOf(" ")).Trim() + ",";
               str2 += arr[i].Substring(0, arr[i].IndexOf(" ")) + ",";
             }
          }
            string retStr = string.Format("{0}:{1}/{2}", zipcode, str1.Substring(0, str1.Length - 1).Trim(), str2.Substring(0, str2.Length - 1).Trim());
            return retStr;
    }
}

CodeWar:

using System.Linq;

public class SalesmanTravel  
{
    public static string Travel(string r, string zipcode) 
    {
        string first = "", second = "";
        if(zipcode.Length > 0)
        {        
            var addresses = r.Split(',').Where(s => s.EndsWith(zipcode)).Select(s => s.Remove(s.Length - zipcode.Length - 1));
            first = string.Join(",", addresses.Select(s => s.Substring(s.IndexOf(' ') + 1)));
            second = string.Join(",", addresses.Select(s => s.Substring(0, s.IndexOf(' '))));
        }
        return string.Format("{0}:{1}/{2}", zipcode, first, second);
    }
}

MSDN:

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值