HDU 3125 slash

Slash

Time Limit: 1000/1000 MS (Java/Others)    Memory Limit: 131072/131072 K (Java/Others)
Total Submission(s): 825    Accepted Submission(s): 466


Problem Description
The American English slash (/) is a punctuation mark. In the early modern period, in the Fraktur script, which was widespread through Europe in the Middle Ages, one slash(/) represented a comma, while two slashes (//) represented a dash.
With the wide use of computers, slash appeared far more than at any previous time in history. On Unix-like systems and in URLs, the slash is to separate directory and file components of a path:
/home/whuacm/chaeyeon/Sherlockpp.jpg
http://acm.whu.edu.cn/
But in Windows systems, it uses (\) to separate directory and file components of a path:
C:\Users\v-yungao\Music\Shake
That really confuses me. Could you help me to judge if the string I wrote is right.
Please notice that I would only make a mistake by changing (\) to (/) or (/) to (\). All the strings were constituted by a-z, A-Z, 0-9, (.) , (\) and (/), no other characters would appear in the strings.
A string of URL always begins with “[a-zA-Z]+://” (Notice (/) maybe changed to (\) ), in which “[a-zA-Z]+” represents any non-empty string of letters.
Windows path begins with “[a-zA-Z]:\” (Notice (\) maybe changed to (/)), in which “[a-zA-Z]” means an English letter. (e.g. “C:\\windows” is a URL not a Windows path)
The path of Unix-like system begins with (/) or (\).
I’ll give you some strings, can you tell me which type those strings belong to and those correct forms.
 

Input
The first line consists of an integer T, indicating the number of strings.
The next T lines, each line consists of a single non-empty string. All of those are really data from our daily life.
 

Output
For each string:
If it belongs to a path in Unix-like systems, output “It’s a path in Unix-like systems!” in a new line and the correct string in the next line.
If it belongs to a path in Windows system, output “It’s a path in Windows system!” in a new line and the correct string in the next line.
If it’s a URL, output “It’s a URL!” in a new line and the correct string in the next line.
The kind of each input string can be uniquely determined.

Constrains
0 < T <= 20
The length of each string will not be longer than 50.

 

Sample Input
  
  
4 http://acm.whu.edu.cn/felioj http:/\acm.whu.edu.cn/11111011001/ \home\whuacm\Slash\yama Z:\movie/chaeyeon
 

Sample Output
  
  
It's a URL! http://acm.whu.edu.cn/felioj It's a URL! http://acm.whu.edu.cn/11111011001/ It's a path in Unix-like systems! /home/whuacm/Slash/yama It's a path in Windows system! Z:\movie\chaeyeon
 
告诉T个字符串,判断是三种类型中的哪一种,但是可能由于手抖把 / 和\  打错;

URL就是以/或者\开头

Unix就是一个字符串然后跟两个杠杠

Windows就是一个字符串后面跟一个杠杠

两个杠杠实际上是一样的

只是windows输出全部是 \

其他两种全部是 /

#include <iostream>
#include <stdio.h>
#include <string>
#include <cstring>
#include <cmath>
#include <algorithm>
#define N 100
using namespace std;

char s[N];
int T;

 char b[N];

int main()
{
    while(~scanf("%d",&T))
    {
        while(T--)
        {
            scanf("%s",s);
            int len=strlen(s);

            if( (s[0]>='a'&&s[0]<='z')||(s[0]>='A'&&s[0]<='Z')  )
            {
                int ff=0;
                int i=0;
                for(i=0;i<len;i++)
                {
                    if(s[i]=='/'||s[i]=='\\')
                    {
                        if(s[i+1]=='\\'||s[i+1]=='/')
                            ff=1;//URL

                        break;
                    }
                    else
                    b[i]=s[i];
                }
                if(ff==1)
                {
                    b[i]='/';
                    i++;
                    b[i]='/';
                }
                else
                b[i++]='\\';

                for(int j=i;j<len;j++)
                {
                    if(s[j]=='\\'||s[j]=='/')
                    {
                        if(ff)
                        b[j]='/';
                        else b[j]='\\';
                    }
                    else
                    b[j]=s[j];

                }
                if(ff)
                cout<<"It's a URL!"<<endl;
                else
                cout<<"It's a path in Windows system!"<<endl;

                for(int k=0;k<len;k++)
                cout<<b[k];

            }
            else
            {
                cout<<"It's a path in Unix-like systems!"<<endl;

                for(int i=0;i<len;i++)
                {
                    if(s[i]=='/'||s[i]=='\\')
                    cout<<'/';
                    else  cout<<s[i];
                }
            }
            cout<<endl;

        }
    }
    return 0;
}




评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值